You are on page 1of 13

UNIVERSIDAD NACIONAL DE SAN AGUSTN DE AREQUIPA FACULTAD DE INGENIERIA DE PRODUCCIN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS

FUNDAMENTOS DE LENGUAJES DE PROGRAMACION LENGUAJE DE PROGRAMACION EN ESPAOL ANALISIS LEXICO Y SINTACTICO GRUPO LABORATORIO: A INTEGRANTES: FRANK PEDRO CORNEJO VALENCIA JOSE PUCHO CHUQUICAA

AREQUIPA - PER 2012

Tabla de contenido
1. 2. 3. INTRODUCIN ....................................................................................................................... 3 DESCRIPCION DEL PROYECTO ............................................................................................... 3 FASE DE ANALISIS LEXICO ...................................................................................................... 4 3.1. 3.2. 4. Autmatas ..................................................................................................................... 4 Lista De Tokens De La Tabla De Smbolos ..................................................................... 6

FASE DE ANALISIS SINTACTICO .............................................................................................. 7 4.1. Gramtica ...................................................................................................................... 7

5.

TECNICA ALGORITMICA A IMPLEMENTAR ............................................................................ 9 5.1. 5.2. Recursividad .................................................................................................................. 9 Funcin Factorial de un Numero ................................................................................... 9

6. 7.

FASE DE EJECUCIN DE CDIGO ........................................................................................... 9 EJECUCION DE LA APLICACION ............................................................................................ 11 7.1. 7.2. 7.3. 7.4. FASE DE ANALISIS LEXICO ............................................................................................ 11 FASE DE ANALISIS SINTACTICO .................................................................................... 11 IMPLEMENTACION DE LA TECNICA ALGORITMICA ..................................................... 12 CREDITOS..................................................................................................................... 12

8.

BIBIOGRAFIA .................................................................................................................... 13

LENGUAJE DE PROGRAMACION EN ESPAOL

1. INTRODUCIN El software Dinmico PUCO++ es un ejecutable en ambiente Windows, escrito en C++ de Visual Studio 2010 de Microsoft. Su uso se suscribe a la materia de Fundamentos de Lenguaje de Programacin en su tema Creacin de Lenguaje de Programacin en espaol . El usuario de este software tiene acceso a las siguientes opciones: Ingreso de cdigo escrito en espaol. Evaluacin del anlisis lxico del cdigo introducido. Evaluacin del anlisis Sintctico de dicho cdigo. Tcnica factorial implementada en lenguaje en espaol.

2. DESCRIPCION DEL PROYECTO Mediante el presente proyecto se va a realizar la construccin de un lenguaje de programacin en espaol que contenga sentencias bsicas o simples; en cuya construccin cumpla con los requerimientos mnimos de su estructura, ya sean as las fases de anlisis lxico; teniendo en esta la tabla de smbolos, junto con los autmatas programados para su anlisis en dicha esta fase; as como la fase de anlisis sintctico ; teniendo en cuenta la gramtica usada para el reconocimiento de cada sentencia dentro del lenguaje a construir, para que su anlisis en esta fase tambin sea exitosa.

3. FASE DE ANALISIS LEXICO Se transforma la secuencia de smbolos de entrada en una secuencia de componentes lxicos sobre la cual ser ms fcil hacer luego el anlisis sintctico. El lenguaje PUCO++ lee caracteres de entrada y los agrupa en secuencias que tienen significado dentro de la estructura sintctica del lenguaje fuente. Esta es la primera fase de un proceso de compilacin. 3.1. Autmatas Identificador: subguion*letra(letra|digito|subguion)*

Constante Numerica: digito(digito)*|+digito|(+-)*digito Numrica positivo negativo

Nmero real

Declaracin:(entero|real|cadena|booleano) letra(letra|digito|subguion)*

Operacin:(digito)+(+|-|*|/)(digito)+

Asignacin:

Comparacin:

3.2. Lista De Tokens De La Tabla De Smbolos

Token principal entero real booleano cadena inicio fin leer retornar escribir si sino para funcion verdad falso + * / = == < > <= >= || && != & ++ -( ) { } , ;

Tipo palabra_clave palabra_clave palabra_clave palabra_clave palabra_clave palabra_clave palabra_clave palabra_reservada palabra_reservada palabra_reservada palabra_reservada palabra_reservada palabra_reservada palabra_reservada operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador signo1_puntuacion_inicio signo1_puntuacion_final signo2_puntuacion_inicio signo2_puntuacion_final puntuadores puntuadores

4. FASE DE ANALISIS SINTACTICO Se descubre la estructura sintctica de la cadena de entrada usando las reglas que definen las cadenas vlidas en el lenguaje fuente. A continuacin se describe la describe la estructura jerrquica o sintctica del lenguaje PUCO++.

4.1. Gramtica Principal Bloque ordenes Bloque Orden ordenes Orden ordenes orden

Orden

asignacin Decisin entrada salida destino = fuente ; Identificador Expresin SI expresin orden SINO orden ; LEE (lista de entradas); ESCRIBE (lista de salidas); Entrada lista entradas , entrada Destino Salida lista salidas , salida Expresin expresin aritmtica termino aritmtico expresin aritmtica OP termino aritmtico factor aritmtico termino aritmtico OPMD factor aritmtico Operando CONTENIDO operando ( expresin aritmtica )

asignacin destino fuente decisin entrada salida lista entradas entrada lista salidas salida expresin expresin aritmtica

termino aritmtico

factor aritmtico operando

OPLOG OPREL OP OPMD definir variables Variables Variable Tipo

NUMERO ENTERO NUMERO REAL CONSTANTE CARACTER CONSTANTE BOOLEANA CONSTANTE SECUENCIA Destino VERDAD | FALSO < | > | <> | = +|*|/

identificador Id Letra Numero

Variables Variable Variables , Variable tipo identificadores ; ENTERO CARACTR REAL BOOLEANO Id Letra | Numero A | B | C ... | Z | a | b | c ... | z 0|1|2|3|4|5|6|7|8|9

5. TECNICA ALGORITMICA A IMPLEMENTAR 5.1. Recursividad Una funcin que se llama a s mismo se dice que es recursiva. 5.2. Funcin Factorial de un Numero Para hallar el Factorial de un nmero: La notacin n! se lee factorial de n e indica el producto de los enteros positivos desde 1 hasta n. Por ejemplo: 3! = 1 2 3 4! = 1 2 3 4 5! = 1 2 3 4 5 n! = 1 2 3 ... (n-2) (n-1) (n) EL cdigo de nuestro lenguaje sera el siguiente: factorial ( n ) { Si ( n == 0 || n == 1 ) Retornar ( 1 ) ; Retornar ( n * factorial( n 1 ) ) ; }

6. FASE DE EJECUCIN DE CDIGO Para desarrollar la fase de ejecucin de cdigo se tom en cuenta la estructura ms considerable a usar en esta tcnica, la cal es la pila; por lo que se procedi la elaboracin de generar una matriz en preorden la cual contendra segn el numero ingresado por cdigo la secuencia de multiplicaciones sucesivas de la funcin factorial, como se ve en la teora de funcin factorial. Por ejemplo factorial de 5 seria: * 5 * 4 * 3 * 2 1

Una vez hecho esto se procede a llenar la pila con nmeros y signos de multiplicacin, una vez llena se procede a retirar el contenido de la pila para as poderlo resolver y poder mostrar el resultado esperado. A continuacin se presentan los valores que van adquiriendo las variables y los valores que son guardados en la pila, en el transcurso del clculo del factorial de un nmero n=5. Paso 0 1 2 3 4 5 6 7 8 9 10 N 5 5 4 3 2 1 2 1 3 4 5 Pila *5 *5,*4 *5,*4,*3 *5,*4,*3,*2 *5,*4,*3,*2,1 *5,*4,*3,*2 *5,*4,*3 *5,*4 *5 Factorial

1 2(2*1) 6(2*3) 24(6*4) 120(24*5)

7. EJECUCION DE LA APLICACION 7.1. FASE DE ANALISIS LEXICO

7.2. FASE DE ANALISIS SINTACTICO

7.3. IMPLEMENTACION DE LA TECNICA ALGORITMICA

7.4.CREDITOS

8. BIBIOGRAFIA

Compiladores, principios, tcnicas y herramientas Alfred V. Aho - Ravi Sethi - Murray Hill - Jeffrey D. Ullman Lenguaje de Programacion: Diseo e implementacin Terrence W. Pratt, Marvin V. Zelkowitz

You might also like