-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwhile.l
More file actions
60 lines (51 loc) · 1.01 KB
/
while.l
File metadata and controls
60 lines (51 loc) · 1.01 KB
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
48
49
50
51
52
53
54
55
56
57
58
%{
int comment=0;
extern int nb_lines ;
%}
space [ \t]
bl {space}+
digit [0-9]
letter [a-zA-Z]
integer {digit}+
identifier {letter}({letter}|{digit})*
%%
\(\*([^"*"]|"*"[^")"])*\*\) ;
{bl} ;
"\n" {nb_lines++;}
declare {return(Declare);}
while {return(While);}
do {return(Do);}
od {return(Od);}
if {return(If);}
then {return(Then);}
else {return(Else);}
begin {return(Begin);}
end {return(End);}
skip {return(Skip);}
call {return(Call);}
proc {return(Proc);}
var {return(Var);}
is {return(Is);}
{identifier} {strcpy(yylval.u_char,yytext);return (Identifier);}
{integer} {yylval.u_int=atoi(yytext);return(Integer);}
";" {return(';');}
":" {return(':');}
"," {return(',');}
"=" {return('=');}
">" {return('>');}
"<" {return('<');}
"=<" {return(Leq);}
"=>" {return(Geq);}
"^" {return('^');}
"+" {return('+');}
"*" {return('*');}
"(" {return('(');}
")" { return(')');}
":=" { return(Assign);}
"/\\" { return(And);}
. {fprintf(stderr,"lexical error:%s\n",yytext);return(Lexical_error);}
%%
int yywrap()
{
return(1);
}