File tree Expand file tree Collapse file tree 1 file changed +33
-27
lines changed
Expand file tree Collapse file tree 1 file changed +33
-27
lines changed Original file line number Diff line number Diff line change @@ -9,33 +9,34 @@ class Lexer
99 private $ regex , $ offsetToToken ;
1010
1111 private $ tokens = [
12- '[a-zA-Z_][a-zA-Z_0-9]* ' => 'identifier ' ,
13- '\. ' => 'dot ' ,
14- '\* ' => 'star ' ,
15- '\[\] ' => 'flatten ' ,
16- '-?\d+ ' => 'number ' ,
17- '\|\| ' => 'or ' ,
18- '\| ' => 'pipe ' ,
19- '\[\? ' => 'filter ' ,
20- '\[ ' => 'lbracket ' ,
21- '\] ' => 'rbracket ' ,
22- '"(?: \\\\\\\\| \\\\"|[^"])*" ' => 'quoted_identifier ' ,
23- '`(?: \\\\\\\\| \\\\`|[^`])*` ' => 'literal ' ,
24- ', ' => 'comma ' ,
25- ': ' => 'colon ' ,
26- '@ ' => 'current ' ,
27- '& ' => 'expref ' ,
28- '\( ' => 'lparen ' ,
29- '\) ' => 'rparen ' ,
30- '\{ ' => 'lbrace ' ,
31- '\} ' => 'rbrace ' ,
32- '!= ' => 'comparator ' ,
33- '== ' => 'comparator ' ,
34- '<= ' => 'comparator ' ,
35- '>= ' => 'comparator ' ,
36- '< ' => 'comparator ' ,
37- '> ' => 'comparator ' ,
38- '[ \t] ' => 'skip ' ,
12+ '[a-zA-Z_][a-zA-Z_0-9]* ' => 'identifier ' ,
13+ '\. ' => 'dot ' ,
14+ '\* ' => 'star ' ,
15+ '\[\] ' => 'flatten ' ,
16+ '-?\d+ ' => 'number ' ,
17+ '\|\| ' => 'or ' ,
18+ '\| ' => 'pipe ' ,
19+ '\[\? ' => 'filter ' ,
20+ '\[ ' => 'lbracket ' ,
21+ '\] ' => 'rbracket ' ,
22+ '\'(?: \\\\\\\\| \\\\\'|[^ \'])* \'' => 'raw_string ' ,
23+ '"(?: \\\\\\\\| \\\\"|[^"])*" ' => 'quoted_identifier ' ,
24+ '`(?: \\\\\\\\| \\\\`|[^`])*` ' => 'literal ' ,
25+ ', ' => 'comma ' ,
26+ ': ' => 'colon ' ,
27+ '@ ' => 'current ' ,
28+ '& ' => 'expref ' ,
29+ '\( ' => 'lparen ' ,
30+ '\) ' => 'rparen ' ,
31+ '\{ ' => 'lbrace ' ,
32+ '\} ' => 'rbrace ' ,
33+ '!= ' => 'comparator ' ,
34+ '== ' => 'comparator ' ,
35+ '<= ' => 'comparator ' ,
36+ '>= ' => 'comparator ' ,
37+ '< ' => 'comparator ' ,
38+ '> ' => 'comparator ' ,
39+ '[ \t] ' => 'skip ' ,
3940 ];
4041
4142 public function __construct ()
@@ -79,6 +80,11 @@ public function tokenize($input)
7980 $ token ['value ' ], $ offset , $ input
8081 );
8182 break ;
83+ case 'raw_string ' :
84+ $ token ['type ' ] = 'literal ' ;
85+ $ token ['value ' ] = substr ($ token ['value ' ], 1 , -1 );
86+ $ token ['value ' ] = str_replace ("\\' " , "' " , $ token ['value ' ]);
87+ break ;
8288 }
8389 $ tokens [] = $ token ;
8490 }
You can’t perform that action at this time.
0 commit comments