peg: use escaped character classes.

db4
John Benediktsson 2015-07-16 08:44:59 -07:00
parent 04c5f5bfce
commit cd6ccdadc3
6 changed files with 19 additions and 19 deletions

View File

@ -58,7 +58,7 @@ dec-mem = ("-")+ => [[ length '[ _ (-) ] ]]
output = "." => [[ [ (.) ] ]]
input = "," => [[ [ (,) ] ]]
debug = "#" => [[ [ (#) ] ]]
space = (" "|"\t"|"\r\n"|"\n")+ => [[ [ ] ]]
space = [ \t\n\r]+ => [[ [ ] ]]
unknown = (.) => [[ "Invalid input" throw ]]
ops = inc-ptr|dec-ptr|inc-mem|dec-mem|output|input|debug|space

View File

@ -62,11 +62,11 @@ Sign = ('+' => [[ first ]]|'-' => [[ first ]])?
StopChar = ('('|')'|'['|']'|'{'|'}'|'/'|'/'|';'|':'|'!'|'.')
Space = ' ' | '\t' | '\r' | '\n'
Space = [ \t\n\r]
Spaces = Space* => [[ ignore ]]
Newline = ('\n' | '\r')
Newline = [\n\r]
Number = Sign Digit+ ('.' => [[ first ]] Digit+)? ('e' => [[ first ]] Sign Digit+)?
=> [[ flatten sift >string string>number ]]

View File

@ -10,7 +10,7 @@ Digit = [0-9]
Digits = Digit+
Number = Digits '.' Digits => [[ "" concat-as string>number ast-number boa ]]
| Digits => [[ >string string>number ast-number boa ]]
Space = " " | "\n" | "\r" | "\t"
Space = [ \t\n\r]
Spaces = Space* => [[ ignore ]]
NameFirst = Letter | "_" => [[ CHAR: _ ]]
NameRest = NameFirst | Digit

View File

@ -20,11 +20,11 @@ IN: peg.javascript.parser
#! insertion rule, but ignore it in all other places.
EBNF: javascript
tokenizer = default
nl = "\r" "\n" | "\n"
nl = "\r\n" | "\n"
tokenizer = <foreign tokenize-javascript Tok>
End = !(.)
Space = " " | "\t" | "\n"
Space = [ \t\n]
Spaces = Space* => [[ ignore ]]
Name = . ?[ ast-name? ]? => [[ value>> ]]
Number = . ?[ ast-number? ]?

View File

@ -14,7 +14,7 @@ Digit = [0-9]
Digits = Digit+
SingleLineComment = "//" (!("\n") .)* "\n" => [[ ignore ]]
MultiLineComment = "/*" (!("*/") .)* "*/" => [[ ignore ]]
Space = " " | "\t" | "\r" | "\n" | SingleLineComment | MultiLineComment
Space = [ \t\r\n] | SingleLineComment | MultiLineComment
Spaces = Space* => [[ ignore ]]
NameFirst = Letter | "$" => [[ CHAR: $ ]] | "_" => [[ CHAR: _ ]]
NameRest = NameFirst | Digit
@ -58,11 +58,11 @@ Str = '"""' StringChars1:cs '"""' => [[ cs ast-string boa ]]
| '"' StringChars2:cs '"' => [[ cs ast-string boa ]]
| "'" StringChars3:cs "'" => [[ cs ast-string boa ]]
RegExpFlags = NameRest* => [[ >string ]]
NonTerminator = !("\n" | "\r") .
NonTerminator = !([\n\r]) .
BackslashSequence = "\\" NonTerminator => [[ second ]]
RegExpFirstChar = !("*" | "\\" | "/") NonTerminator
RegExpFirstChar = !([*\\/]) NonTerminator
| BackslashSequence
RegExpChar = !("\\" | "/") NonTerminator
RegExpChar = !([\\/]) NonTerminator
| BackslashSequence
RegExpChars = RegExpChar*
RegExpBody = RegExpFirstChar RegExpChars => [[ first2 swap prefix >string ]]

View File

@ -71,7 +71,7 @@ exponent =
sign =
"+" => [[ f ]] | "-"
digit-sequence = [0-9]+ => [[ >string ]]
wsp = (" " | "\t" | "\r" | "\n")
wsp = [ \t\r\n]
transform-list = wsp* transforms?:t wsp*
=> [[ t [ identity-transform ] unless* ]]
@ -214,7 +214,7 @@ fractional-constant = digit-sequence? "." digit-sequence | digit-sequence "."
exponent = ( "e" | "E" ) sign? digit-sequence
sign = "+" => [[ drop f ]] | "-"
digit-sequence = [0-9]+ => [[ >string ]]
wsp = (" " | "\t" | "\r" | "\n")
wsp = [ \t\r\n]
svg-path = wsp* moveto-drawto-command-groups?:x wsp* => [[ x ]]