S02 - 4 Proyecto de Programacion

4
PROYECTO DE PROGRAMACION El ejercicio consiste en implantar un reconocedor lexicográfico y sintáctico de un compilador para un subconjunto de Pascal., el subconjunto es mínimo pero permite expresar programas (Las palabras reservadas han sido traducidas al español). ESTRUCTURA DEL PROGRAMA. Un programa consta de una secuencia de declaraciones de datos globales, una secuencia de declaraciones de procedimientos y funciones y una sola proposición compuesta que es el "programa principal". El código siguiente es un ejemplo de un programa a reconocer: PROGRAMA ejemplo(ENTRADA,SALIDA); VARIABLES x, y : ENTERO; FUNCION mcd(a,b : ENTERO) : ENTERO; VARIABLES x : ENTERO; n : ENTERO; INICIO x := a; n := b; SI n = 0 ENTONCES mcd:=x CASOCONTRARIO mcd := mcd(n, x RESTODIVIDIR n) FIN; INICIO LEER(x,y); x := x + 2; y := y * x ; ESCRIBIR(x,y); FIN. SINTAXIS DE UN SUBCONJUNTO DEL PASCAL CON INSTRUCCIONES EN ESPAÑOL. estructuradelprograma PROGRAMA id ( lista_identificadores ); declaraciones declaraciones_subprogramas proposicion_compuesta . lista_identificadores id

Transcript of S02 - 4 Proyecto de Programacion

Page 1: S02 - 4 Proyecto de Programacion

PROYECTO DE PROGRAMACION

El ejercicio consiste en implantar un reconocedor lexicográfico y sintáctico de un compilador para un subconjunto de Pascal., el subconjunto es mínimo pero permite expresar programas (Las palabras reservadas han sido traducidas al español).

ESTRUCTURA DEL PROGRAMA.

Un programa consta de una secuencia de declaraciones de datos globales, una secuencia de declaraciones de procedimientos y funciones y una sola proposición compuesta que es el "programa principal".

El código siguiente es un ejemplo de un programa a reconocer:

PROGRAMA ejemplo(ENTRADA,SALIDA);VARIABLES x, y : ENTERO;FUNCION mcd(a,b : ENTERO) : ENTERO;VARIABLES x : ENTERO; n : ENTERO;INICIO x := a; n := b; SI n = 0 ENTONCES mcd:=x CASOCONTRARIO mcd := mcd(n, x RESTODIVIDIR n)FIN;INICIO LEER(x,y); x := x + 2; y := y * x ; ESCRIBIR(x,y);FIN.

SINTAXIS DE UN SUBCONJUNTO DEL PASCAL CON INSTRUCCIONES EN ESPAÑOL.

estructuradelprograma PROGRAMA id ( lista_identificadores ); declaraciones

declaraciones_subprogramas proposicion_compuesta .

lista_identificadores id | lista_identificadores , id

| oplib

declaraciones declaraciones VARIABLES lista_identificadores : tipo ;

|

tipo tipo_estandar

| ARREGLO [ num .. num ] DE tipo_estandar

Page 2: S02 - 4 Proyecto de Programacion

tipo_estandar ENTERO | REAL | LOGICO

declaraciones_subprogramas declaraciones_subprogramas declaracion_subprograma ;

|

declaracion _subprograma encab_subprograma declaraciones proposicion_compuesta

encab_subprograma FUNCION id argumentos : tipo_estandar ; | PROCEDIMIENTO id argumentos ;

argumentos ( lista_parametros ) |

lista_parametros lista_identificadores : tipo | lista_parametros ; lista_identificadores : tipo

proposicion_compuesta INICIO proposiciones_optativas FIN

proposiciones_optativas lista_proposiciones |

lista_proposiciones proposicion | lista_proposiciones ; proposicion

proposicion variableasignable := expresion | proposicion_procedimiento | proposicion_compuesta | SI expresion ENTONCES proposicion CASOCONTRARIO proposición | REPETIR proposicion HASTA expresión | PARA id = num HASTA num HACER proposicion | MIENTRAS expresion HACER proposicion | LEER ( lista_identificadores ) | ESCRIBIR ( lista_identificadores )

variableasignable id | id [ expresion ]

Page 3: S02 - 4 Proyecto de Programacion

proposicion_procedimiento id | id ( lista_expresiones )lista_expresiones expresion | lista_expresiones , expresion

expresion expresion_simple | expresion_simple oprel expresion_simple

expresion_simple termino | signo termino | expresion_simple opsuma termino

termino factor | termino opmult factor

factor id | id ( lista_expresiones ) | num | ( expresion ) | opneg factor

signo + | - CONVENCIONES LEXICOGRAFICAS.

1. Los comentarios se encierran entre { y }2. Los espacios en blanco entre los componentes léxicos son opcionales, con la excepción de que las

palabras clave deben ir encerradas entre espacios en blanco.3. El componente léxico id para los identificadores concuerda con una letra seguida de letras o dígitos:

id letra ( letra | digito )* letra [ a-zA-Z]digito [ 0 - 9 ]

El implantador puede desear poner límite a la longitud de un identificador

4. El componente léxico num concuerda con números sin signo

num digitos fraccion_optativa exponente_optativo digitos digito digito* fraccion_optativa . digitos | exponente_optativo E ( + | – | ) digitos |

5. Las palabras clave son reservadas y aparecen en negrita y mayúsculas.

Page 4: S02 - 4 Proyecto de Programacion

6. Los operadores oprel son: =, < >, < =, > =, >

7. Los operadores opsuma son: + , - , o

8. Los operadores opmult son: *, /, divisionentera, restodividir, y

9. El operador opneg es: negacion

10. Los operadores oplib son: entrada , salida