Skip to content

Commit 53da012

Browse files
authored
Merge pull request #1 from AndresPescador/patch-2
Update lexico.py
2 parents d63aac2 + 321f70c commit 53da012

File tree

1 file changed

+59
-82
lines changed
  • compilador/src/services/analizador_lexico

1 file changed

+59
-82
lines changed

compilador/src/services/analizador_lexico/lexico.py

Lines changed: 59 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"IDENTIFICADOR",
55
"NUMERO_ENTERO",
66
"NUMERO_DECIMAL",
7-
"CADENA",
87
"CARACTER",
8+
"CADENA",
99
"OPERADOR_SUMA",
1010
"OPERADOR_RESTA",
1111
"OPERADOR_MULTIPLICACION",
@@ -24,26 +24,46 @@
2424
"MAYOR_O_IGUAL_QUE",
2525
"MENOR_O_IGUAL_QUE",
2626
"DIFERENTE_DE",
27-
"AND",
28-
"OR",
29-
"NOT",
30-
"IF",
31-
"ELSE",
32-
"WHILE",
33-
"FOR",
34-
"TRUE",
35-
"FALSE",
36-
"CLASS",
37-
"PUBLIC",
38-
"STATIC",
39-
"VOID",
40-
"RETURN",
27+
"OPERADOR_LOGICO_AND",
28+
"OPERADOR_LOGICO_OR",
29+
"OPERADOR_LOGICO_NOT",
4130
"CORCHETE_IZQUIERDO",
4231
"CORCHETE_DERECHO",
32+
"TIPO_DATO",
33+
"MOD_ACCESO",
34+
"MODIFICADOR",
35+
"TIPO_FUNCION",
36+
"PALABRA_RESERVADA",
4337
)
4438

39+
palabrasReservadas = {
40+
"public": "MOD_ACCESO",
41+
"static": "MODIFICADOR",
42+
"void": "TIPO_FUNCION",
43+
"class": "PALABRA_RESERVADA",
44+
"if": "PALABRA_RESERVADA",
45+
"else": "PALABRA_RESERVADA",
46+
"while": "PALABRA_RESERVADA",
47+
"for": "PALABRA_RESERVADA",
48+
"true": "PALABRA_RESERVADA",
49+
"false": "PALABRA_RESERVADA",
50+
"float": "TIPO_DATO",
51+
"System": "PALABRA_RESERVADA",
52+
"private": "MOD_ACCESO",
53+
"int": "TIPO_DATO",
54+
"double": "TIPO_DATO",
55+
"String": "TIPO_DATO",
56+
"char": "TIPO_DATO",
57+
"boolean": "TIPO_DATO",
58+
"long": "TIPO_DATO",
59+
"short": "TIPO_DATO",
60+
"return": "PALABRA_RESERVADA",
61+
}
62+
4563
def t_IDENTIFICADOR(t):
4664
r'[a-zA-Z_][a-zA-Z0-9_]*'
65+
if t.value in palabrasReservadas:
66+
t.type = palabrasReservadas[t.value]
4767
return t
4868

4969
def t_NUMERO_ENTERO(t):
@@ -52,22 +72,22 @@ def t_NUMERO_ENTERO(t):
5272
return t
5373

5474
def t_NUMERO_DECIMAL(t):
55-
r'\d+\.\d+'
75+
r'\d+(\.\d+)?'
5676
t.value = float(t.value)
5777
return t
5878

59-
def t_CADENA(t):
60-
r'\"([^\\\n]|(\\.))*?\"'
61-
t.value = t.value[1:-1]
79+
def t_CARACTER(t):
80+
r'\'(.)\''
81+
t.value = t.group(1)
6282
return t
6383

64-
def t_CARACTER(t):
65-
r'\'(.|\n)\''
84+
def t_CADENA(t):
85+
r'\"([^\\\n]|(\\.))*?\"'
6686
t.value = t.value[1:-1]
6787
return t
6888

6989
def t_OPERADOR_SUMA(t):
70-
r'\+\s+'
90+
r'\+'
7191
return t
7292

7393
def t_OPERADOR_RESTA(t):
@@ -110,6 +130,14 @@ def t_LLAVE_DERECHA(t):
110130
r'\}'
111131
return t
112132

133+
def t_CORCHETE_IZQUIERDO(t):
134+
r'\['
135+
return t
136+
137+
def t_CORCHETE_DERECHO(t):
138+
r'\]'
139+
return t
140+
113141
def t_PUNTO_COMA(t):
114142
r'\;'
115143
return t
@@ -150,77 +178,26 @@ def t_DIFERENTE_DE(t):
150178
r'\!='
151179
return t
152180

153-
def t_IF(t):
154-
r'if'
155-
return t
156-
157-
def t_ELSE(t):
158-
r'else'
159-
return t
160-
161-
def t_WHILE(t):
162-
r'while'
163-
return t
164-
165-
def t_FOR(t):
166-
r'for'
167-
return t
168-
169-
def t_TRUE(t):
170-
r'true'
171-
return t
172-
173-
def t_FALSE(t):
174-
r'false'
175-
return t
176-
177-
def t_CLASS(t):
178-
r'class'
179-
return t
180-
181-
def t_PUBLIC(t):
182-
r'public'
183-
return t
184-
185-
def t_STATIC(t):
186-
r'static'
187-
return t
188-
189-
def t_VOID(t):
190-
r'void'
191-
return t
192-
193-
def t_RETURN(t):
194-
r'return'
195-
return t
196-
197-
def t_CORCHETE_IZQUIERDO(t):
198-
r'\['
199-
return t
200-
201-
def t_CORCHETE_DERECHO(t):
202-
r'\]'
203-
return t
204-
205-
t_ignore = ' \t\n\[\]'
206-
207-
def t_COMENTARIO(t):
208-
r'//.*\n'
209-
pass
210-
211181
def t_error(t):
212182
print("Error: caracter desconocido '%s'" % t.value[0])
213183
t.lexer.skip(1)
184+
185+
t_ignore = ' \t\n'
214186

215187
Programa = """
216188
public class HolaMundo {
217-
private int numero = 5;
189+
private int num = 5;
190+
public float numero = 3.1;
191+
System.out.println(numero);
218192
public static void main(String[] args) {
219193
Scanner scan = new Scanner(System.in);
220194
int num = scan.nextInt();
221195
System.out.println(num);
222196
System.out.println("Hola mundo!");
223-
197+
if(a >= 5 && numero!=0){
198+
int ab = -23+3*2/34;
199+
char c = "a";
200+
}
224201
}
225202
}
226203
"""

0 commit comments

Comments
 (0)