practica2 compi1
DESCRIPTION
practicaTRANSCRIPT
![Page 1: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/1.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 1/9
Universidad de San Carlos de GuatemalaFacultad de IngenieríaOrganización de Lenguajes y Compiladores 1Ing. Mario BautistaAux. David Lopez
PRACTICA 2
OBJETIVOS
Que el estudiante sea capaz de poner en práctica los conocimiento adquiridos en el tema
de Análisis Sintáctico mediante una aplicación
Que el estudiante sea capaz de construir gramáticas complejas y funcionales.
Que el estudiante comprenda y utilice la herramienta Irony
DESCRIPCION
La práctica consiste en que el estudiante desarrolle una herramienta que de formato a una
entrada de texto similar a la sintaxis de ANSI C debido a que no existen muchos de código libre a
disposición de los desarrolladores de este lenguaje.
SINTAXIS
A continuación se definirán las reglas del lenguaje
INCLUDES
Include
Se utilizara la siguiente sintaxis:#include '<identificador>.h'
Ejemplo:#include 'stdio.h'
IDENTIFICADORES Y VARIABLES
Identificadores
o
Consta de uno o más caracteres.
o El primer carácter debe ser una letra o el carácter subrayado (_), mientras que,
todos los demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras
![Page 2: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/2.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 2/9
pueden ser minúsculas o mayúsculas del alfabeto inglés. No está permitido el uso
de las letras 'ñ' y 'Ñ'.
Tipos de Dato
Los tipos de datos son los siguientes
Tipo Entrada
int Numero entero cualquiera : 5, 45, 984,etc.
char Carácter: ‘3’, ‘a’, ‘3’, etc.
float Numero flotante: 5.6, 9.3
char* Cadena: “hola es una cadena”
Declaración de Variables
Las variables serán declarables de la siguiente forma, las opciones dentro de corchetes son
opcionales.
<nombre_del_tipo_de_dato> <nombre_de_la_variable> [ = <expresión> ];
También de la forma
<nombre_del_tipo_de_dato> <nombre_de_la_variable_1> [= <expresión_1>],
<nombre_de_la_variable_2> [= <expresión_2>],...,
<nombre_de_la_variable_n> [= <expresión_n>];
Ejemplo:
int var1;
int var1 = 5+6*5;
char m= ‘a’;
int var1=2,var2=5*6,var3;
![Page 3: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/3.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 3/9
TIPOS DE OPERADORES
Operadores Aritméticos
Operador Aplicacion
+ 5+var2- Var3-var2
/ Var3/var2
* Var3*var6*5.5
% 5%var
- -var+2
+ +var2*5
Operadores Relacionales
Operador Aplicación < 5.5<5*var3
> Var1>5*var2
<= 5<=5*var3
>= Var1>=5*var2
== Var2==var3
!= Var15!=var2
Operadores de Incremento/Decremento
Operador Aplicación
++ i++;-- Var1 = var2--;
Operadores de Asignación
Operador Aplicacion
+= Var1 +=var2 +2;
-= Var1 -=var2 +2;
*= Var1 *=var2 +2;
![Page 4: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/4.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 4/9
FUNCIONES Y METODOS
Funciones
int main()
{
<bloque_de_instrucciones>
}
int suma(int num1, int num2)
{
<bloque_de_instrucciones>
}
TIPOS DE INSTRUCCIONES
Instrucción Compuesta
{
<bloque_de_instrucciones>
}
Instruccion de Expresion
Son aquellas que representan a las acciones más pequeñas (elementales) que se pueden
ejecutar en un programa, y siempre van seguidas de un carácter punto y coma (;), el cual
indica que la instrucción ha terminado:
<instrucción_de_expresión>;
<expresión>;
Do While
Para una instrucción repetitiva do while se utiliza la sintaxis:do
{
<bloque_de_instrucciones>
} while ( <expresión_lógica> );
![Page 5: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/5.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 5/9
For
Para una instrucción repetitiva “for” se utiliza la sintaxis:
for ( <expresión_1> ; <expresión_2> ; <expresión_3> )
{
<bloque_de_instrucciones>
}
While
Para la instrucción while se utiliza la sintaxis
while ( <expresión_lógica> )
{
<bloque_de_instrucciones>
}
Switch
Una instrucción alternativa múltiple (o simplemente alternativa múltiple) permite
seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar
de entre varios posibles. En lenguaje C, para escribir una alternativa múltiple se utiliza la
sintaxis:
switch ( <expresión> )
{
case <expresión_1> : [ <bloque_de_instrucciones_1> ]
[ break; ]
case <expresión_2> : [ <bloque_de_instrucciones_2> ]
[ break; ]
...
case <expresión_n> : [ <bloque_de_instrucciones_n> ]
[ break; ][ default : <bloque_de_instrucciones_n+1> ]
}
![Page 6: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/6.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 6/9
If
Para la instrucción If se utiliza la sintaxis
if ( <expresión_lógica> )
{<bloque_de_instrucciones>
}
If Else
Para la instrucción If else se utiliza la sintaxis
if ( <expresión_lógica> )
{
<bloque_de_instrucciones_1>
}
else
{
<bloque_de_instrucciones_2>
}
COMENTARIOS
Multilinea
Los comentarios multilinea se escriben entre los caracteres barra-asterisco (/*) y asterisco-
barra (*/).
Ejemplo
/*
Este es un comentario multilinea
*/
Linea
Los comentarios de una línea se escriben con los caracteres //
Ejemplo
//este es un comentario de una linea
![Page 7: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/7.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 7/9
REQUERIMIENTOS DE LA SOLUCION
Formato de Texto Se deberá de generar el texto que se ingresó identado (se ingresara desordenado, no identado)
siguiendo la estructura del ANSI C.
Ejemplo
Entrada
![Page 8: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/8.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 8/9
Salida
Generación del árbol
Se deberá de generar para la entrada a formatear un grafo del árbol AST con la herramientaGraphviz.
![Page 9: practica2 compi1](https://reader031.vdocuments.pub/reader031/viewer/2022020811/563db859550346aa9a92e52a/html5/thumbnails/9.jpg)
7/17/2019 practica2 compi1
http://slidepdf.com/reader/full/practica2-compi1 9/9
Consideraciones
El proyecto deberá de ser realizado en el lenguaje C# con la herramienta Irony, de lo contrario
no tendrá derecho a calificación.
La realización del proyecto es individual, está prohibido que los estudiantes trabajen en grupoy se compartan el proyecto, copias de proyecto tendrán un valor de 0 (cero) y serán
reportados al ingeniero y a la escuela de Sistemas.
La plataforma de desarrollo deberá de ser Visual Studio.
El código fuente deberá de estar versionado en su cuenta privada de bitbucket, de lo contrario
no se tendrá derecho a calificación, (Las fuentes se bajaran de la última versión publicada.)
Los archivos a entregar serán el código fuente de la aplicación.
Fecha de Entrega Lunes 19 de octubre del 2015