-
Notifications
You must be signed in to change notification settings - Fork 1
/
AnalizadorLexicoTiny.l
121 lines (115 loc) · 3.3 KB
/
AnalizadorLexicoTiny.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package alex;
import errors.GestionErroresTiny;
%%
%cup
%line
%class AnalizadorLexicoTiny
%unicode
%public
%{
private ALexOperations ops;
private GestionErroresTiny errores;
public String lexema() {return yytext();}
public int fila() {return yyline+1;}
public void fijaGestionErrores(GestionErroresTiny errores) {
this.errores = errores;
}
%}
%eofval{
return ops.unidadEof();
%eofval}
%init{
ops = new ALexOperations(this);
%init}
and = and
or = or
not = not
while = while
if = if
else = else
return = return
true = true
false = false
int = int
bool = bool
switch = switch
case = case
default = default
void = void
main = main
null = null
new = new
letra = ([A-Z]|[a-z])
digito = [0-9]
separador = [ \t\r\b\n]
comentario = //[^\n]*
identificador = {letra}({letra}|{digito}|{barrabaja})*
numeroEntero = ([\+\-]?{digito}{digito}*)
operadorSuma = \+
operadorResta = \-
operadorMultiplicacion = \*
operadorDivision = /
parentesisApertura = \(
parentesisCierre = \)
ampersand = &
igual = \=
igualigual = \=\=
barrabaja = _
coma = \,
punto = \.
puntocoma = \;
dospuntos = \:
mayor = >
menor = <
mayorigual = >\=
menorigual = <\=
distinto = !\=
corcheteApertura = \[
corcheteCierre = \]
llaveApertura = \{
llaveCierre = \}
%%
{separador} {}
{comentario} {}
{and} {return ops.unidadAnd();}
{or} {return ops.unidadOr();}
{not} {return ops.unidadNot();}
{while} {return ops.unidadWhile();}
{if} {return ops.unidadIf();}
{else} {return ops.unidadElse();}
{return} {return ops.unidadReturn();}
{true} {return ops.unidadTrue();}
{false} {return ops.unidadFalse();}
{int} {return ops.unidadInt();}
{bool} {return ops.unidadBool();}
{switch} {return ops.unidadSwitch();}
{case} {return ops.unidadCase();}
{default} {return ops.unidadDefault();}
{void} {return ops.unidadVoid();}
{main} {return ops.unidadMain();}
{new} {return ops.unidadNew();}
{identificador} {return ops.unidadId();}
{numeroEntero} {return ops.unidadEnt();}
{operadorSuma} {return ops.unidadSuma();}
{operadorResta} {return ops.unidadResta();}
{operadorMultiplicacion} {return ops.unidadMul();}
{operadorDivision} {return ops.unidadDiv();}
{parentesisApertura} {return ops.unidadPAp();}
{parentesisCierre} {return ops.unidadPCierre();}
{ampersand} {return ops.unidadAmpersand();}
{igual} {return ops.unidadIgual();}
{igualigual} {return ops.unidadIgualIgual();}
{coma} {return ops.unidadComa();}
{punto} {return ops.unidadPunto();}
{puntocoma} {return ops.unidadPuntoComa();}
{dospuntos} {return ops.unidadDosPuntos();}
{mayor} {return ops.unidadMayor();}
{menor} {return ops.unidadMenor();}
{mayorigual} {return ops.unidadMayorIgual();}
{menorigual} {return ops.unidadMenorIgual();}
{distinto} {return ops.unidadDistinto();}
{corcheteApertura} {return ops.unidadCAp();}
{corcheteCierre} {return ops.unidadCCierre();}
{llaveApertura} {return ops.unidadLAp();}
{llaveCierre} {return ops.unidadLCierre();}
[^] {errores.errorLexico(fila(),lexema());}