blob: 5b72086e36a393e8367c1f5396ab439049ba13e5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/*** definition section ***/
%{
/* C to be copied verbatim */
#include "parser.h"
%}
/* read only one input file */
%option noyywrap
%option yylineno
DIGIT [0-9]
ALPHA [[:alpha:]_]
/*** rules section ***/
%%
"(" {return L_PAREN;}
")" {return R_PAREN;}
"{" {return L_BRACK;}
"}" {return R_BRACK;}
";" {return SEMI_COL;}
"~" {return COMP;}
"*" {return MULT;}
"/" {return DIV;}
"%" {return MOD;}
"-" {return MINUS;}
"+" {return PLUS;}
"int" {return INT;}
"void" {return VOID;}
"return" {return RET;}
{DIGIT}+ {yylval.ival = atol(yytext); return NUMBER;}
{ALPHA}+ {
yylval.sval = strdup(yytext);
return WORD;
}
[[:space:]]+ {/* discard */}
. {
printf("Error at line %d: unrecognized symbol \"%s\"\n", yylineno, yytext);
return YYerror;
}
%%
/*** C section ***/
|