-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlex.l
More file actions
58 lines (47 loc) · 1.74 KB
/
lex.l
File metadata and controls
58 lines (47 loc) · 1.74 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
D [0-9]
L [a-zA-Z_]
H [a-fA-F0-9]
C "/*"((\*+[^/*])|([^*]))*\**"*/"
%{
#include <stdio.h>
#include "y.tab.h"
#include "compi.h"
/* Ne gère pas les commentaires. A rajouter */
/* Supprimer les lignes dont vous n'avez pas besoin. */
%}
%%
"break" { return BREAK; }
"case" { return CASE; }
"default" { return DEFAULT; }
"else" { return ELSE; }
"extern" { return EXTERN; }
"for" { return FOR; }
"if" { return IF; }
"int" { return INT; }
"return" { return RETURN; }
"switch" { return SWITCH; }
"void" { return VOID; }
"while" { return WHILE; }
{L}({L}|{D})* { yylval.nom = strdup(yytext); return IDENTIFICATEUR; }
{D}+ { yylval.nom = strdup(yytext); return CONSTANTE; }
">>" { return RSHIFT; }
"<<" { return LSHIFT; }
"&&" { return LAND; }
"||" { return LOR; }
"<=" { return LEQ; }
">=" { return GEQ; }
"==" { return EQ; }
"!=" { return NEQ; }
"+" { return PLUS; }
"-" { return MOINS; }
"*" { return MUL; }
"/" { return DIV; }
"&" { return BAND; }
"|" { return BOR; }
"!" { return NOT; }
"<" { return LT; }
">" { return GT; }
{C} { }
[ \t\v\n\f] { }
. { return yytext[0]; }
%%