forked from toful/SyntacticalAnalyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFALexicalAnalyzer.l
49 lines (44 loc) · 1.11 KB
/
FALexicalAnalyzer.l
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
%option noyywrap
%{
#include "./FASyntacticAnalyzer.tab.h"
int i=0;
int estat = 0;
int num_estats;
int simbol = 0;
%}
alfabeto [Aa][Ll][Ff][Aa][Bb][Ee][Tt][Oo]
estados [Ee][Ss][Tt][Aa][Dd][Oo][Ss]
transiciones [Tt][Rr][Aa][Nn][Ss][Ii][Cc][Ii][Oo][Nn][Ee][Ss]
inicial [Ii][Nn][Ii][Cc][Ii][Aa][Ll]
final [Ff][Ii][Nn][Aa][Ll][Ee][Ss]
SIMBOLO [a-zA-Z0-9]
NUMERO 0|[1-9][0-9]*
COMENTARIO "%"
LINIA "\n"
TAB "\t"
ESPACIO " "
ABRIR "{"
CERRAR "}"
ABRIR_P "("
CERRAR_P ")"
COMA ","
SEPARADOR ";"
ESPACIOS ({ESPACIO}|{TAB})*
%%
{alfabeto} {simbol=1;return ALFABET;}
{SIMBOLO} { yylval.stringut=strdup(yytext);if(simbol) return SIMBOL; else return NUMERO;}
{estados} {return ESTATS;}
{NUMERO} { yylval.stringut=strdup(yytext);return NUMERO; }
{transiciones} {return TRANSICIONS;}
{inicial} {return ESTAT_INICIAL;}
{final} {return ESTATS_FINALS;}
{ABRIR} {return OBRE;}
{CERRAR} {if(simbol) simbol=0; return TANCA;}
{COMA} {return COMA;}
{ABRIR_P} {return OBRE_P;}
{CERRAR_P} {return TANCA_P;}
{SEPARADOR} {return SEPARADOR;}
{COMENTARIO}(.)*{LINIA} {}
{ESPACIOS} {}
{LINIA} {i=i+1;}
%%