From a0533a8a308b4e17e50113b0e8ec5a61cd138ae1 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 26 Jan 2014 14:38:48 -0800 Subject: Sigh; more lexical-syntactic hacks. This adds handling for the @' combination, as in @(bind a @'(foo ,bar)) * parser.l: Handle the new METAQUO token. * parser.y (METAQUO): New token. (meta_expr): New "METAQUO expr" case. Added missing METABKT error handling case. --- parser.l | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'parser.l') diff --git a/parser.l b/parser.l index 0dca7331..cc348cc2 100644 --- a/parser.l +++ b/parser.l @@ -432,17 +432,28 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U} return yytext[0]; } -[(\[] | -@?[(\[] { +[(\[] { yy_push_state(NESTED); - if (yytext[0] == '@') { - yylval.chr = yytext[1]; - return yytext[1] == '(' ? METAPAR : METABKT; - } yylval.lineno = lineno; return yytext[0]; } +@[(\['] { + yylval.chr = yytext[1]; + yylval.lineno = lineno; + switch (yytext[1]) { + case '(': + yy_push_state(NESTED); + return METAPAR; + case '[': + yy_push_state(NESTED); + return METABKT; + default: + case '\'': + return METAQUO; + } +} + ,[*] { yylval.chr = '*'; return SPLICE; -- cgit v1.2.3