PresentacionMacrogrupo1
Páginas: 9 (2019 palabras)
Publicado: 9 de julio de 2015
Semántico y Código Intermedio =
Compilador.
Macrogrupo 1.
Grupo 1
Grupo 3
Grupo 4
Grupo 11
Analizador Léxico.
4 scanners:
◦ 2 implementados a mano (grupos 4 y 11)
◦ 1 implementado con Coco/R (grupo 3)
◦ 1 implementado con JFlex (grupo 1)
Se elige el scanner implementado con
JFlex (Grupo 1).
◦ Comodidad a la hora de cambiar código.
◦ Fácil integración con el SLK.◦ Experiencias anteriores.
Analizador Léxico.
Tipos de tokens generados:
Palabras Reservadas
Atributo: Puntero a la Tabla de Símbolos
Ejemplos: FOR, IF, WITH
Identificadores
Atributo: Puntero a la Tabla de Símbolos
Ejemplos: variable, nota, casa
Operadores comparación
Atributo: Tipo Enumerado
Ejemplos: <,<=,>,>=,!=,=
Operador Asignación
Atributo: Nada
Ejemplos: :=
Operador Unitario
Atributo:Enumerado
Analizador Léxico.
Tipos de tokens generados:
Operadores Aditivos
Atributo: Tipo Enumerado
Ejemplos: +, Operadores Multiplicativos
Atributo: Tipo Enumerado
Ejemplos: *, /
Número Entero (octal y hexadecimal)
Atributo: Valor numérico
Ejemplos: 1, 56
Número Real
Atributo: Valor numérico
Ejemplos: 1.2, 56.7893
EOF
Analizador Léxico.
Tipos de tokens generados:
Cadenas de caracteres
Atributo:Puntero a la tabla de símbolos
Ejemplos: "Hola mundo", "adios"
Carácter (en octal)
Atributo: Carácter
Ejemplos: a, b, z, 3
Puntuación
Atributo: Tipo enumerado
Ejemplos: ;, (, ]
Función predefinida
Atributo:Tipo enumerado
Procedimiento predefinido
Atributo:Tipo enumerado
Analizador Léxico.
Analizador Léxico.
Herramienta utilizada: JFlex.
JFlex es un generador de scanners para Java,
implementadotambién en Java, que genera un
analizador léxico de manera rápida y sencilla,
independientemente de la plataforma que
utilicemos a la hora de programar.
Recibe archivo .flex
Genera AFD.
Analizador Léxico.
Herramienta utilizada: JFlex.
Se utilizan:
- PATRONES
- ESTADOS
- FUNCIONES
- Código Java empotrado
Nuestro Archivo .flex
Diseño de la tabla de
símbolos
Tabla hash por cada ámbito
conestructura de árbol
Diseño de la tabla de
símbolos
MODULE mod0;
VAR a : INTEGER;
MODULE mod1
VAR b,c: INTEGER
EXPORT c;
PROCEDURE incrementar (VAR &c : INTEGER);
BEGIN
b := 1 + c;
END p;
BEGIN
incrementar(c);
END mod1.
BEGIN
a := c;
END mod0.
Lista de exportadas
null
mod0
Lexema
Tipo
a
INTEGE
R
Valor
Conteni
do
contine
nte
Nº args
Tipo
args
Paso
args
Mod
padre
null
null
0
NullNull
Null
Diseño de la tabla de
símbolos
MODULE mod0;
VAR a : INTEGER;
MODULE mod1
VAR b,c: INTEGER
EXPORT c;
PROCEDURE incrementar (VAR &c : INTEGER);
BEGIN
b := 1 + c;
END p;
BEGIN
incrementar(c);
END mod1.
BEGIN
a := c;
END mod0.
Lista de exportadas
null
mod0
Lexema
Tipo
a
INTEGE
R
mod1
MODUL
E
Valor
Conteni
do
contine
nte
Nº args
Tipo
args
Paso
args
Mod
padre
null
null
0
NullNull
Null
Null
0
Null
Null
Null
Diseño de la tabla de
símbolos
MODULE mod0;
VAR a : INTEGER;
MODULE mod1
VAR b,c: INTEGER
EXPORT c;
PROCEDURE incrementar (VAR &c : INTEGER);
BEGIN
b := 1 + c;
END p;
BEGIN
incrementar(c);
END mod1.
Puntero a la
tabla de
simbolos de
mod1
BEGIN
a := c;
END mod0.
Lista de exportadas
null
mod0
Lexema
Tipo
Valor
Conteni
do
contine
nte
Nº args
Tipoargs
Paso
args
Mod
padre
a
INTEGE
R
Null
Null
null
0
Null
Null
Null
mod1
MODUL
E
Null
Null
0
Null
Null
Null
Diseño de la tabla de
símbolos
MODULE mod0;
VAR a : INTEGER;
MODULE mod1
VAR b,c: INTEGER
EXPORT c;
PROCEDURE incrementar (VAR &c : INTEGER);
Puntero a la
tabla de
simbolos de
mod0
BEGIN
b := 1 + c;
END p;
BEGIN
incrementar(c);
END mod1.
Puntero a la
tabla de
simbolosde
incrementar
BEGIN
a := c;
Lista de exportadas
END mod0.
{c}
mod1
Lexema
Tipo
Valor
Conteni
do
contine
nte
Nº args
Tipo
args
Paso
args
b
INTEGE
R
Null
Null
Null
0
Null
Null
c
INTEGE
R
Null
Null
Null
0
Null
Null
Increme
ntar
PROCE
DURE
Null
Null
1
{INTEG
ER}
{VALOR
}
Mod
padre
Diseño de la tabla de
símbolos
MODULE mod0;
VAR a : INTEGER;
MODULE mod1
VAR b,c:...
Leer documento completo
Regístrate para leer el documento completo.