You are on page 1of 3

Compiladores

Semestre 2017-1
Segundo Programa
Análisis léxico-sintáctico

Objetivo
Construir, en un mismo programa, los analizadores Léxico y Sintáctico Descendente que revisen programas
escritos en el lenguaje definido por la gramática elaborada en clase y que se presenta al final del documento.
Descripción

 La entrada es un archivo con el programa fuente a analizar que deberá estar escrito en el lenguaje definido por la
gramática elaborada en clase (Pascal - -) y que se presenta al final del documento. Este archivo de entrada se
indicará desde la línea de comandos.
 El programa realizará tanto el análisis léxico como el sintáctico. El analizador léxico deberá generar además de los
tokens, la cadena de átomos que será la entrada del analizador sintáctico.
 Deberán adecuar el analizador léxico ya elaborado con lo siguiente:
o La tabla de clases de componentes léxicos que deberá reconocer es:

Clase
0
1
2
3
4

Descripción
Palabras reservadas
Identificadores definidos por el usuario
Tipos de datos estándar
Funciones estándar
Procedimientos estándar
Operadores aritméticos
+-*/
Operadores relacionales
Símbolos especiales
, ; : . ( )[ ]
Constantes enteras
Constantes reales (sin notación E)
Cadenas ‘ ‘
Operador de asignación :=

5
6
7
8
9
10
11
o

Átomo(s)
a

+-*/
, ; : .
( )[ ]
n
x

=

El valor en los tokens y los átomos se indican en las siguientes tablas.

Valor
0

Palabra
reservada
AND

1

Átomo
&

Val
or
10

Palabra
reservada
MOD

Átomo

ARRAY

y

11

NOT

!

2

BEGIN

e

12

OR

|

3

DIV

\

13

PROGRAM

#

4

DO

z

14

REPEAT

@

5

DOWNTO

d

15

THEN

h

6

ELSE

o

16

TO

j

7

END

f

17

UNTIL

k

8

FOR

p

18

VAR

v

9

IF

s

19

WHILE

q

%

Valor

Op relac.

Átomo

0
1
2
3
4
5

<
<=
=
<>
>
>=

<
_
¿
?
>
$

 Los errores que vaya encontrando el analizador léxico. También sería conveniente enviar un archivo fuente de prueba. Entregar: Un documento con la siguiente estructura:  Descripción del problema (no del programa).  El programa deberá estar documentado. así como él o los errores sintácticos. . indicando participantes por cada actividad).  Conclusiones de cada uno de los integrantes del equipo. En el diseño indicar el conjunto de selección de cada producción. con una descripción breve de lo que hace (puede ser el objetivo indicado en este documento). Diseño e implementación. sólo un miembro del equipo. Finalmente deberá indicar si está sintácticamente correcto el programa fuente. la tabla de cadenas y la cadena de átomos. Nota: se podrá elaborar individualmente o en equipo de 2 Enviar el documento y sólo el programa fuente definitivo a la plataforma educativa y en su caso. los podrá ir mostrando en pantalla o escribirlos en un archivo. el nombre de quienes elaboraron el programa y fecha de elaboración. Se deberá cuidar mucho la sangría que denota la dependencia de instrucciones. si resultan conjuntos de selección no disjuntos para producciones de un mismo no-terminal. los tokens. el analizador léxico-sintáctico deberá mostrar el contenido de la tabla de símbolos.  Propuesta de solución y fases del desarrollo del sistema: Análisis (planificación.  Indicaciones de cómo correr el programa. hacer los ajustes pertinentes para que resulte una gramática LL(1).  Como resultados. Fecha de entrega: 27 de octubre de 2016. Así como lo que hace cada función.  El analizador sintáctico deberá indicar todos los errores sintácticos que encuentre.Valor Tipos de datos estándar 0 1 2 3 4 boolean char integer real text Átomo b c i r Valor Procedimiento Átomo 0 1 2 3 4 5 get put read readln write writeln g u l t w m Valor Función 0 1 2 3 4 5 6 7 8 9 10 abs chr cos eof eoln exp ln sin sqr sqrt trunc  El átomo de los caracteres especiales y los operadores aritméticos será el mismo carácter.

G 14: G → Ɛ 15: S → A 16: S → L 17: S → W 18: S → K 19: S→ B 20: A → a=E 21: L → l(aH) 22: L → t(aH) 23: W→ w(U) 24: W → mX 25: U → aY 26: U → “Y 27: Y → .N.SP 33: P → Ɛ 34: B → I 35: B → R Semestre 2017-1 Gramática 36: B → Q 37: B → D 38: I → sChSO 39: O → Ɛ 40: O → oS 41: R → @SPkC 42: Q→ qCzS 43: D → pAZEzS 44: Z → j 45: Z → d 46: E → TE’ 47: E’ → +TE’ 48: E’→ -TE’ 49: E’→ |TE’ 50: E’ → Ɛ 51: T → FT’ 52: T’ → *FT’ 53: T’ → /FT’ 54: T’ → \FT’ 55: T’ → %FT’ 56: T’ → &FT’ 57: T’ → Ɛ 58: F → (E) 59: F → a 60: F → !a 61: F → n 62: F → x 63: C → ER’E 64: R’ → < 65: R’ → _ 66: R’ → ¿ 67: R’ → ? 68: R’ → > 69: R’ → $ .U 28: Y → Ɛ 29: X → Ɛ 30: X → (U) 31: K → eSPf 32: P → . 02: N → VK 03: N→ K 04: V → vaH:D’.G 05: H → .aH 06: H→ Ɛ 07: D’ → iJ 08: D’ → rJ 09: D’ → bJ 10: D’ → cJ 11: J → y[n] 12: J → Ɛ 13: G → aH:D’.Compiladores 01: M → #a(aH).