Analizador lexico

UNIVERSIDAD TECNICA PARTICULAR DE LOJA Sistemas Informáticos y Computación TEORIA DE AUTOMATAS Y COMPILADORES PROYECTO

Views 182 Downloads 3 File size 811KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD TECNICA PARTICULAR DE LOJA Sistemas Informáticos y Computación TEORIA DE AUTOMATAS Y COMPILADORES

PROYECTO ““AAnnaalliizzaaddoorr llééxxiiccoo yy ssiinnttááccttiiccoo ppaarraa eell lleenngguuaajjee PPHHPP”” AUTORES: Pablo Torres Myriam Sarango Fabián Yuquilema

SUPERVISOR: Ing. María Belén Mora

CICLO: Séptimo Ciclo

CICLO ACADEMICO: Octubre 2010 – Febrero 2011

OBJETIVOS: General: 

Aplicar los conocimientos obtenidos en la materia de Autómatas y Compiladores.

Específicos:    

Comprender y analizar la sintaxis del lenguaje PHP. Desarrollar un autómata. Desarrollar un analizador léxico. Desarrollar un analizador semántico.

INTRODUCCIÓN: El presente proyecto está dirigido a la construcción de un analizador léxico, así como también del semántico para el lenguaje PHP, los cuales realizan el reconocimiento de palabras, signos y letras que son permitidos dentro del código del lenguaje, si se encuentra algo distinto devuelve un error y nos muestra el origen del error. Para los cual utilizaremos los conocimientos obtenidos en la materia de TEORIA DE AUTOMATAS Y COMPILADORES.

DESCRIPCIÓN: Lenguaje en el que se va desarrollar el proyecto: Java (NetBeans) Lenguaje del compilador: PHP.

IDENTIFICADORES: Alfabeto = { a, b, c, d, e, f, g, h, i, j, , l, m, n, o, p, q, r, s, t, u, v, w, x, y, z } Dígitos = { 1,2,3,4,5,6,7,8,9,0 } Delimitadores = { “”, “[”, “]”, “{”, “}”, “(”, “)”, “,” , ”;” } Operadores Aritméticos = { “=”, “”, “+”, “ –“ , “*” , “/”, } Comentarios = { “//” } Operadores lógicos = { “and”, “or”}

Palabras Reservadas: for

endfor

If

else

and

switch

while

Do

Case

endwhile

endif

endswitch

Or

DEFINICIÓN DE ESTRUCTURAS: ESTRUCTURA PHP Declaración:

ESTRUCTURA VARIABLES En php no se declaran los tipos de datos, estos son asumidos dependiendo del valor que tenga la variable. Todas las variables deben iniciar con el signo ‘$’, para poder ser identificadas como variables.

Declaración: $ + nombre_variable + = + valor + ; ESTRUCTURA CONSTANTES: Declaración: define(nombre_variable, valor); ESTRUCTURA PARA SALIDAS DE PANTALLA Declaración: echo “texto a mostrar”; print “texto a mostrar”; Se debe tener en cuenta que el separador es un espacio, y no la comilla, tanto luego de la palabra reservada “echo”, como de la palabra “print”.

ESTRUCTURA IF if (condición){ línea de código; } También se puede iniciar el bloque sin las llaves, en tal caso luego de la condición entre paréntesis iría el signo dos puntos ":" luego las sentencias, y terminaría el if con la palabra reservada endif.

if (condición): línea de código; endif; ESTRUCTURA IF ELSE if ( condición ){ código; } else { código; } También se puede iniciar el bloque sin las llaves, en tal caso luego de la condición entre paréntesis iría el signo dos puntos ":" luego las sentencias, después el else con el signo dos puntos ":", nuevamente las sentencias y terminaría con la palabra reservada endif.

if ( condición ): código; else: código; endif; ESTRUCTURA FOR for ( variable = valor_inicial; variable + condición + valor_limite ; variable + incremento_decremento) { Código; } También se puede iniciar el bloque sin las llaves, en tal caso luego de las expresiones entre paréntesis iría el signo dos puntos ':', y el bucle termina con la palabra reservada endfor.

for ( expresiones ) : Código; endfor;

ESTRUCTURA WHILE while (variable a evaluar + carácter lógico+ valor con el que evaluara ){ Código; } También se puede iniciar el bloque sin las llaves, se escribe el signo dos puntos ':' luego de la condición entre paréntesis, y se finaliza el bloque con la palabra reservada endwhile.

while (variable a evaluar + carácter lógico+ valor con el que evaluara ): Código; endwhile; ESTRUCTURA DO WHILE do { Código; } while (variable a evaluar + condición lógica + valor con el que evaluara); ESTRUCTURA SWITCH switch + ( + valor_a_avaluar + ) + { case + alternativa_1 + ; codigó; break; case + alternativa_2 + ; codigó; break; case + alternativa_n + ; codigó; break; } En este caso también en vez del signo „{‟ puede ir el signo dos puntos ':' luego de la condición entre paréntesis, y la palabra reservada endswitch al final.

TABLA DE SEPARADORES: Palabras Reservadas

Separadores

Token