diff options
-rw-r--r-- | lex.yy.c.shipped | 3 | ||||
-rw-r--r-- | parser.c | 2 | ||||
-rw-r--r-- | parser.h | 1 | ||||
-rw-r--r-- | parser.l | 3 | ||||
-rw-r--r-- | tests/012/syntax.tl | 6 |
5 files changed, 15 insertions, 0 deletions
diff --git a/lex.yy.c.shipped b/lex.yy.c.shipped index 35825975..f8a74c51 100644 --- a/lex.yy.c.shipped +++ b/lex.yy.c.shipped @@ -6730,11 +6730,14 @@ int yylex(YYSTYPE *yylval_param, yyscan_t yyscanner) struct yy_token *tok = &yyextra->tok_pushback[--yyextra->tok_idx]; yyextra->recent_tok = *tok; *yylval_param = tok->yy_lval; + if (tok->yy_lex_state && tok->yy_lex_state != YYSTATE) + yy_push_state(tok->yy_lex_state, yyg); return tok->yy_char; } yy_char = yyextra->recent_tok.yy_char = yylex_impl(yylval_param, yyscanner); yyextra->recent_tok.yy_lval = *yylval_param; + yyextra->recent_tok.yy_lex_state = YYSTATE; return yy_char; } @@ -135,9 +135,11 @@ void parser_common_init(parser_t *p) p->scanner = convert(scanner_t *, yyscan); yyset_extra(p, p->scanner); p->recent_tok.yy_char = 0; + p->recent_tok.yy_lex_state = 0; p->recent_tok.yy_lval.val = 0; for (i = 0; i < 4; i++) { p->tok_pushback[i].yy_char = 0; + p->tok_pushback[i].yy_lex_state = 0; p->tok_pushback[i].yy_lval.val = 0; } p->tok_idx = 0; @@ -39,6 +39,7 @@ typedef struct parser parser_t; struct yy_token { int yy_char; YYSTYPE yy_lval; + int yy_lex_state; }; struct circ_stack { @@ -1222,11 +1222,14 @@ int yylex(YYSTYPE *yylval_param, yyscan_t yyscanner) struct yy_token *tok = &yyextra->tok_pushback[--yyextra->tok_idx]; yyextra->recent_tok = *tok; *yylval_param = tok->yy_lval; + if (tok->yy_lex_state && tok->yy_lex_state != YYSTATE) + yy_push_state(tok->yy_lex_state, yyg); return tok->yy_char; } yy_char = yyextra->recent_tok.yy_char = yylex_impl(yylval_param, yyscanner); yyextra->recent_tok.yy_lval = *yylval_param; + yyextra->recent_tok.yy_lex_state = YYSTATE; return yy_char; } diff --git a/tests/012/syntax.tl b/tests/012/syntax.tl index 6b6f331a..87b01d67 100644 --- a/tests/012/syntax.tl +++ b/tests/012/syntax.tl @@ -1,5 +1,11 @@ (load "../common") +"top level literal" + +".." + +"." + #;(commented out list) #;3.14 #;abc |