dd515790e883dcbc645d15bbef4ea23373b9bed3
[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 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 COMMA;
44 '([^']|\\[abtnvfr]|\\x[0-9a-fA-F]{2})' {
45 yylval = ast_char(yytext);
46 return CHAR;
47 }
48 [0-9]+ {
49 yylval = ast_int(atoi(yytext));
50 return INTEGER;
51 }
52 [_a-zA-Z][_a-zA-Z0-9]* {
53 yylval = ast_ident(yytext);
54 return IDENT;
55 }
56 [ \n\t] ;
57
58 %%