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