Add flags to regexp tokenizer in JavaScript
parent
9c96edb805
commit
cf00bc8a0c
|
@ -7,7 +7,7 @@ TUPLE: ast-keyword value ;
|
||||||
TUPLE: ast-name value ;
|
TUPLE: ast-name value ;
|
||||||
TUPLE: ast-number value ;
|
TUPLE: ast-number value ;
|
||||||
TUPLE: ast-string value ;
|
TUPLE: ast-string value ;
|
||||||
TUPLE: ast-regexp value ;
|
TUPLE: ast-regexp body flags ;
|
||||||
TUPLE: ast-cond-expr condition then else ;
|
TUPLE: ast-cond-expr condition then else ;
|
||||||
TUPLE: ast-set lhs rhs ;
|
TUPLE: ast-set lhs rhs ;
|
||||||
TUPLE: ast-get value ;
|
TUPLE: ast-get value ;
|
||||||
|
|
|
@ -26,9 +26,9 @@ End = !(.)
|
||||||
Space = " " | "\t" | "\n"
|
Space = " " | "\t" | "\n"
|
||||||
Spaces = Space* => [[ ignore ]]
|
Spaces = Space* => [[ ignore ]]
|
||||||
Name = . ?[ ast-name? ]? => [[ value>> ]]
|
Name = . ?[ ast-name? ]? => [[ value>> ]]
|
||||||
Number = . ?[ ast-number? ]? => [[ value>> ]]
|
Number = . ?[ ast-number? ]?
|
||||||
String = . ?[ ast-string? ]? => [[ value>> ]]
|
String = . ?[ ast-string? ]?
|
||||||
RegExp = . ?[ ast-regexp? ]? => [[ value>> ]]
|
RegExp = . ?[ ast-regexp? ]?
|
||||||
SpacesNoNl = (!(nl) Space)* => [[ ignore ]]
|
SpacesNoNl = (!(nl) Space)* => [[ ignore ]]
|
||||||
|
|
||||||
Expr = OrExpr:e "?" Expr:t ":" Expr:f => [[ e t f ast-cond-expr boa ]]
|
Expr = OrExpr:e "?" Expr:t ":" Expr:f => [[ e t f ast-cond-expr boa ]]
|
||||||
|
@ -85,9 +85,9 @@ PrimExpr = PrimExpr:p "[" Expr:i "]" => [[ i p ast-getp
|
||||||
PrimExprHd = "(" Expr:e ")" => [[ e ]]
|
PrimExprHd = "(" Expr:e ")" => [[ e ]]
|
||||||
| "this" => [[ ast-this boa ]]
|
| "this" => [[ ast-this boa ]]
|
||||||
| Name => [[ ast-get boa ]]
|
| Name => [[ ast-get boa ]]
|
||||||
| Number => [[ ast-number boa ]]
|
| Number
|
||||||
| String => [[ ast-string boa ]]
|
| String
|
||||||
| RegExp => [[ ast-regexp boa ]]
|
| RegExp
|
||||||
| "function" FuncRest:fr => [[ fr ]]
|
| "function" FuncRest:fr => [[ fr ]]
|
||||||
| "new" PrimExpr:n "(" Args:as ")" => [[ n as ast-new boa ]]
|
| "new" PrimExpr:n "(" Args:as ")" => [[ n as ast-new boa ]]
|
||||||
| "new" PrimExpr:n => [[ n f ast-new boa ]]
|
| "new" PrimExpr:n => [[ n f ast-new boa ]]
|
||||||
|
|
|
@ -57,8 +57,9 @@ StringChars3 = (EscapeChar | !("'") .)* => [[ >string ]]
|
||||||
Str = '"""' StringChars1:cs '"""' => [[ cs ast-string boa ]]
|
Str = '"""' StringChars1:cs '"""' => [[ cs ast-string boa ]]
|
||||||
| '"' StringChars2:cs '"' => [[ cs ast-string boa ]]
|
| '"' StringChars2:cs '"' => [[ cs ast-string boa ]]
|
||||||
| "'" StringChars3:cs "'" => [[ cs ast-string boa ]]
|
| "'" StringChars3:cs "'" => [[ cs ast-string boa ]]
|
||||||
|
RegExpFlags = NameRest*
|
||||||
RegExpBody = (!("/" | "\n" | "\r") .)* => [[ >string ]]
|
RegExpBody = (!("/" | "\n" | "\r") .)* => [[ >string ]]
|
||||||
RegExp = "/" RegExpBody:r "/" => [[ r ast-regexp boa ]]
|
RegExp = "/" RegExpBody:b "/" RegExpFlags:fl => [[ b fl ast-regexp boa ]]
|
||||||
Special = "(" | ")" | "{" | "}" | "[" | "]" | "," | ";"
|
Special = "(" | ")" | "{" | "}" | "[" | "]" | "," | ";"
|
||||||
| "?" | ":" | "!==" | "!=" | "===" | "==" | "=" | ">="
|
| "?" | ":" | "!==" | "!=" | "===" | "==" | "=" | ">="
|
||||||
| ">" | "<=" | "<" | "++" | "+=" | "+" | "--" | "-="
|
| ">" | "<=" | "<" | "++" | "+=" | "+" | "--" | "-="
|
||||||
|
|
Loading…
Reference in New Issue