@@ -15,9 +15,11 @@ - (id)initWithDelegate:(id)d {
1515 self.startRuleName = @" start" ;
1616 self.tokenKindTab [@" '" ] = @(QUOTESYMBOL_TOKEN_KIND_SINGLE);
1717 self.tokenKindTab [@" \" " ] = @(QUOTESYMBOL_TOKEN_KIND_DOUBLE);
18+ self.tokenKindTab [@" \\ " ] = @(QUOTESYMBOL_TOKEN_KIND_BACK);
1819
1920 self.tokenKindNameTab [QUOTESYMBOL_TOKEN_KIND_SINGLE] = @" '" ;
2021 self.tokenKindNameTab [QUOTESYMBOL_TOKEN_KIND_DOUBLE] = @" \" " ;
22+ self.tokenKindNameTab [QUOTESYMBOL_TOKEN_KIND_BACK] = @" \\ " ;
2123
2224 }
2325 return self;
@@ -47,7 +49,7 @@ - (void)start_ {
4749
4850 do {
4951 [self sym_ ];
50- } while ([self predicts: QUOTESYMBOL_TOKEN_KIND_DOUBLE, QUOTESYMBOL_TOKEN_KIND_SINGLE, 0 ]);
52+ } while ([self predicts: QUOTESYMBOL_TOKEN_KIND_BACK, QUOTESYMBOL_TOKEN_KIND_DOUBLE, QUOTESYMBOL_TOKEN_KIND_SINGLE, 0 ]);
5153
5254 [self fireDelegateSelector: @selector (parser:didMatchStart: )];
5355}
@@ -58,6 +60,8 @@ - (void)sym_ {
5860 [self single_ ];
5961 } else if ([self predicts: QUOTESYMBOL_TOKEN_KIND_DOUBLE, 0 ]) {
6062 [self double_ ];
63+ } else if ([self predicts: QUOTESYMBOL_TOKEN_KIND_BACK, 0 ]) {
64+ [self back_ ];
6165 } else {
6266 [self raise: @" No viable alternative found in rule 'sym'." ];
6367 }
@@ -79,4 +83,11 @@ - (void)double_ {
7983 [self fireDelegateSelector: @selector (parser:didMatchDouble: )];
8084}
8185
86+ - (void )back_ {
87+
88+ [self match: QUOTESYMBOL_TOKEN_KIND_BACK discard: NO ];
89+
90+ [self fireDelegateSelector: @selector (parser:didMatchBack: )];
91+ }
92+
8293@end
0 commit comments