fix minor memory leak
[ccc.git] / scan.l
1 %option noinput
2 %option nounput
3 %{
4
5 #include <stdio.h>
6 #include "ast.h"
7 #include "y.tab.h"
8 extern YYSTYPE yylval;
9
10 %}
11
12 %%
13
14 if return IF;
15 else return ELSE;
16 while return WHILE;
17 var return VAR;
18 true { yylval.expr = expr_bool(true); return BOOL; }
19 false { yylval.expr = expr_bool(false); return BOOL; }
20 return return RETURN;
21 = return ASSIGN;
22 ! return INVERSE;
23 \|\| return BINOR;
24 && return BINAND;
25 == return EQ;
26 != return NEQ;
27 \<= return GEQ;
28 \< return GE;
29 >= return LEQ;
30 > return LE;
31 : return CONS;
32 \+ return PLUS;
33 - return MINUS;
34 \* return TIMES;
35 \/ return DIVIDE;
36 % return MODULO;
37 \^ return POWER;
38 \( return BOPEN;
39 \) return BCLOSE;
40 \{ return COPEN;
41 \} return CCLOSE;
42 \; return SEMICOLON;
43 \[\] return NIL;
44 \. return DOT;
45 , return COMMA;
46 '([^']|\\[abtnvfr]|\\x[0-9a-fA-F]{2})' {
47 yylval.expr = expr_char(yytext); return CHAR; }
48 [0-9]+ {
49 yylval.expr = expr_int(atoi(yytext)); return INTEGER; }
50 [_a-zA-Z][_a-zA-Z0-9]* {
51 yylval.ident = safe_strdup(yytext); return IDENT; }
52 [ \n\t] ;
53
54 %%