LENGUAJES Y AUTOMATAS II
Compilador de java
ANALIZADOR LEXICO
Esta fase del compilador es la nica que est en contacto con el programa fuente. Su
funcin es leer las instrucciones del programa y generar una serie de elementos bsicos
(componentes lxicos) utilizados para su construccin. Esta fase se encarga de verificar si
todas las cadenas pertenecen o no al lenguaje. Es decir realiza un anlisis smbolo por
smbolo indicando el token por cada uno de los elementos reconocidos o el error en caso de
no reconocer. Este anlisis no logra detectar muchos errores por su caracterstica.
Para el analizador lxico, la instruccin leda es una simple cadena de caracteres sin una
estructura en particular. Mediante el uso de tcnicas adecuadas descompondr esta
cadena en una serie de elementos fundamentales del lenguaje utilizado para su escritura.
Estos elementos bsicos, en el contexto de los lenguajes de programacin, sern
nombres de variables, palabras reservadas del lenguaje (while, for, switch, etc.),
constantes literales, diversos operadores aritmticos, relacionales y lgicos, etc.
El analizador lxico trabaja a solicitud del analizador sintctico. Este ltimo se encarga de
verificar que las diferentes instrucciones estn bien escritas verificando un conjunto de
reglas de escrituras dictadas por una gramtica.
Estas reglas se enuncian de manera general haciendo uso de diferentes componentes
elementales conocidos como componentes lxicos. Por ejemplo, una regla de escritura
ANALIZADOR SINTACTICO
El anlisis sintctico convierte el texto de entrada en otras estructuras (comnmente rboles),
que son ms tiles para el posterior anlisis y capturan la jerarqua implcita de la entrada.
Un analizador lxico crea tokens de una secuencia de caracteres de entrada y son
estos tokens los que son procesados por el analizador sintctico para construir la estructura
de datos, por ejemplo un rbol de anlisis o rboles de sintaxis abstracta.
El anlisis sintctico tambin es un estado inicial del anlisis de frases de lenguaje natural. Es
usado para generar diagramas de lenguajes que usan flexin gramatical, como los idiomas
romances o el latn. Los lenguajes habitualmente reconocidos por los analizadores sintcticos
son los lenguajes libres de contexto. Cabe notar que existe una justificacin formal que
establece que los lenguajes libres de contexto son aquellos reconocibles por un autmata de
pila, de modo que todo analizador sintctico que reconozca un lenguaje libre de contexto es
equivalente en capacidad computacional a un autmata de pila.
Los analizadores sintcticos fueron extensivamente estudiados durante los aos 70 del siglo
XX, detectndose numerosos patrones de funcionamiento en ellos, cosa que permiti la
creacin de programas generadores de analizadores sintticos a partir de
una especificacin de la sintaxis del lenguaje en forma Backus-Naur.
OPTIMIZADOR DE CODIGO
En esta etapa como su nombre lo dice es de hacer ms pequeo el cdigo y reducir el
uso de memoria de la CPU a continuacin unos consejos para optimizar el cdigo.
1. Variables: No declares variables que no se vayan a usar ya que ocupan memoria.
Utiliza constantes para aquellos valores que sern fijos a lo largo de la ejecucin.
A la hora de declarar variables siempre es preferible usar variables estticas.
Intenta evitar el uso de variables globales.
2. Unset: Aunque PHP dispone de un Garbage Collector (liberador de memoria) no
est de ms usar la funcin unset para eliminar variables y aumentar la memoria
disponible, sobre todo cuando se usan arrays o variables extensas en servidores
limitados.
3. Comparaciones: Los switch / case usan ms ciclos de procesador que los if /
else, por lo tanto usa estos ltimos siempre que puedas.
4. Bucles: Un bucle for es ms lento que un while, que a su vez es ms lento que
un do..while. Debes evitar que la condicin de parada de tus bucles sea una
funcin, mejor una variable donde se guarde el valor de la funcin previamente.
Revisa tus bucles y elimina aquellos que realmente no son necesarios.
5. Inclusiones: Aunque las funciones include_once() y require_once() son muy
tiles para evitar cargar el mismo script repetidas veces, su costo es muy alto.
Revisa tu cdigo e intenta usar include() y require() en su lugar.
6. Utiliza HTML antes que PHP: Cuando tengas que escribir cdigo HTML evita
usar funciones PHP, como echo o print, salvo en casos en que sea indispensable.
7. Comillas en PHP: Usa siempre que puedas las comillas simples ya que a
diferencia de las dobles, que interpolan los valores de las variables, estas solo
interpretan literales, con la consiguiente mejora de procesamiento. Adems debes
evitar el uso del smbolo del dolar sin escapar (\$) entre comillas dobles ya que
ralentiza el cdigo enormemente.
8. Comprobar existencia de variables: Cuando se necesite verificar la existencia de
variables usaremos isset() antes que empty() o is_array(), ya que la primera es la
ms eficiente.
9. Operador ===: Cuando compares dos variables del mismo tipo intenta evitar el
operador ===, ya que a diferencia de == que solo compara valores, este adems
compara el tipo de variable.
10. Reporte de errores: Para usar el mximo nivel de error en tu log del debug usa
E_STRICT como nivel de error.
11. Memoria y velocidad: Para comprobar la velocidad y la memoria que consume
tu cdigo te sern tiles las funciones memory_get_usage() y microtime().
GENERADOR DE CODIGO
Es una de las fases mediante el cual el compilador convierte el programa sintcticamente
correcto en una serie de instrucciones a ser interpretadas por una mquina. La entrada en
esta fase viene representada, tpicamente, por un rbol Sintctico, un rbol de Sintaxis
Abstracta, o una Representacin Intermedia.
BIBLIOGRAFIA