%}
+%start IN_COMMENT
+
%%
+<INITIAL>{
+\/\* BEGIN(IN_COMMENT);
+[ \n\t] ;
+\/\/.*\n? ;
if return IF;
else return ELSE;
while return WHILE;
\[\] return NIL;
\. return DOT;
, return COMMA;
-'([^']|\\[abtnvfr]|\\x[0-9a-fA-F]{2})' {
+\"([^"]|\\\")*\" {
+ yylval.expr = expr_string(yytext); return STRING; }
+'([^\\']|\\['0\\abtnvfr]|\\x[0-9a-fA-F][0-9a-fA-F])' {
yylval.expr = expr_char(yytext); return CHAR; }
[0-9]+ {
yylval.expr = expr_int(atoi(yytext)); return INTEGER; }
[_a-zA-Z][_a-zA-Z0-9]* {
yylval.ident = safe_strdup(yytext); return IDENT; }
-[ \n\t] ;
+}
+<IN_COMMENT>{
+\*\/ BEGIN(INITIAL);
+. ;
+}
%%