0% encontró este documento útil (0 votos)
51 vistas

TP 1

El documento presenta un lenguaje de programación imperativo pequeño llamado TIP, similar a C++. Explica que TIP permite funciones con parámetros, variables, estructuras de control y llamadas a funciones. Incluye ejemplos de programas TIP simples y recursivos. Luego define formalmente la gramática de TIP a través de reglas para expresiones, declaraciones, funciones, apuntadores y programas.

Cargado por

OmarVargas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas

TP 1

El documento presenta un lenguaje de programación imperativo pequeño llamado TIP, similar a C++. Explica que TIP permite funciones con parámetros, variables, estructuras de control y llamadas a funciones. Incluye ejemplos de programas TIP simples y recursivos. Luego define formalmente la gramática de TIP a través de reglas para expresiones, declaraciones, funciones, apuntadores y programas.

Cargado por

OmarVargas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

ISIS-1106 Lenguajes y máquinas

TP 1
Fecha: March 2, 2021

Task 1. Para este taller vamos a construir un lenguaje de programación imperativo


pequeño (TIP), muy parecido a C++. El lenguaje permite escribir programas basados en
funciones. una función esta definida por su nombre, conjunto de parámetros y bloque de
ejecución. Cada bloque de ejecución puede estar conformado por, definición de variables,
asignación de valores a variables, llamado de funciones, y uso de estructuras de control
(condicionales y ciclos).
Usted debe proveer un programa de JavaCC, procesar los programas escritos en nuestro
lenguaje TIP. Puede encontrar algunos ejemplos de programas aceptados por el lenguaje
a continuación. Note que para poder utilizar funciones o variables dentro de una función,
estas deben estar definidas con anterioridad
Programas ejemplo.
1 ite ( n ) {
2 var f ;
3 f = 1;
4 while (n >0) {
5 f = f*n;
6 n = n -1;
7 }
8 return f ;
9 }
Snippet 1: Simple program

1 rec ( n ) {
2 var f ;
3 i f ( n ==0) {
4 f =1;
5 }
6 else {
7 f = n * rec (n -1) ;
8 }
9 return f ;
10 }
Snippet 2: Recursive program

TIP gramárica. La gramática para TIP esta dada por las siguientes reglas
ISIS-1106 Lenguajes y máquinas
TP 1
Fecha: March 2, 2021
1 foo (p , x ) {
2 var f , q ;
3 i f (* p ==0) { f = 1; }
4 else {
5 q = malloc ;
6 * q = (*( p ) -1;
7 f =(* p ) *(( x ) (q , x ) ) ;
8 }
9 return f ;
10 }

12 main () {
13 var n ;
14 n = input ;
15 return foo (& n , foo ) ;
16 }
Snippet 3: Complicated program

Expresiones.

E → intconst
→ id
→ E + E | E − E | E ∗ E | E / E | E > E | E == E
→ (E)
→ input

Declaraciones.

S → id = E
→ output E
→ SS
→ if (E) { S }
→ if (E) { S } else { S }
→ while (E) { S }
→ var id1 , . . . , idn
ISIS-1106 Lenguajes y máquinas
TP 1
Fecha: March 2, 2021

Funciones.

F → id ( id, . . . id ) { var id . . . , id; S return E; }


E → id(E, . . . , E) //expresiones de function

Apuntadores.

E → &id
→ malloc
→ ∗E
S → ∗id = E; //asignación de valores
E → (E)(E, . . . , E) //generalización de llamado a funciones

Programas.

P → F ... F

Note que estamos definiendo programas, y por lo tanto el sı́mbolo distinguido de la


gramática es P

También podría gustarte