+D [0-9]
+H [0-9a-fA-F]
+E ([0\\abtnvfr]|x{H}?{H}|0[0-3]?{O}?{O})
+I [a-zA-Z_]
+O [0-7]
+
%option noinput
%option nounput
%{
}
#include "ast.h"
-#include "y.tab.h"
+#include "parse.h"
%}
\[\] return NIL;
\. return DOT;
, return COMMA;
-\"([^\\"]|\\[\"0\\abtnvfr]|\\x[0-9a-fA-F][0-9a-fA-F])*\" {
+\"([^\\"]|\\(\"|{E}))*\" {
yylval.expr = expr_string(trimquotes(yytext)); return STRING; }
-'([^\\']|\\['0\\abtnvfr]|\\x[0-9a-fA-F][0-9a-fA-F])' {
+'([^\\']|\\('|{E}))' {
yylval.expr = expr_char(trimquotes(yytext)); return CHAR; }
-[0-9]+ {
+{D}+ {
yylval.expr = expr_int(atoi(yytext)); return INTEGER; }
-[_a-zA-Z][_a-zA-Z0-9]* {
+{I}({I}|{D})* {
yylval.ident = safe_strdup(yytext); return IDENT; }
}
<IN_COMMENT>{