You are on page 1of 7

c cc

 
c    c  
 c  

c cc
  

Un     (en inglés Ô ë es una de las partes de un compilador que
transforma su entrada en un árbol de derivación.

El análisis sintáctico convierte el texto de entrada en otras estructuras (comúnmente


árbolesë que son más útiles para el posterior análisis y capturan la jerarquía implícita de la
entrada. Un analizador léxico crea tokens de una secuencia de caracteres de entrada y son
estos tokens los que son procesados por el analizador sintáctico para construir la estructura
de datos por ejemplo un árbol de análisis o árboles de sintaxis abstracta.

 

Existen básicamente dos formas de describir cómo en una cierta gramática una cadena


puede ser derivada desde el símbolo inicial. La forma más simple es listar las cadenas de


 c 
símbolos consecutivas comenzando por el símbolo inicial y finalizando con la cadena y las
reglas que han sido aplicadas. Si introducimos estrategias como reemplazar siempre el no
terminal de más a la izquierda primero entonces la lista de reglas aplicadas es suficiente. A
esto se le llama        . Por ejemplo si tomamos la siguiente
gramática:


(1ë S ĺ S + S
(2ë S ĺ 1 c    c 

La cadena "1 + 1 + 1" su derivación a la izquierda está en la lista [(1ë (1ë (2ë (2ë (2ë.
Análogamente la      ! se define como la lista que obtenemos si
siempre reemplazamos primero el no terminal de más a la derecha. En ese caso la lista de
reglas aplicadas para la derivación de la cadena con la gramática anterior sería la [(1ë (2ë
(1ë (2ë (2ë.

O  O
c cc
 
c    c  
 c  


La distinción entre derivación por la izquierda y por la derecha es importante porque en la


mayoría de analizadores la transformación de la entrada es definida dando una parte de
código para cada producción que es ejecutada cuando la regla es aplicada. De modo que es
importante saber qué derivación aplica el analizador por que determina el orden en el que
el código será ejecutado.
Una derivación también puede ser expresada mediante una estructura jerárquica sobre la
cadena que está siendo derivada. Por ejemplo la estructura de la derivación a la izquierda
de la cadena "1 + 1 + 1" con la gramática anterior sería:

SĺS+S (1ë
SĺS+S+S (1ë
Sĺ1+S+S (2ë
Sĺ1+1+S (2ë
Sĺ1+1+1 (2ë


{{{1}S + {1}S}S + {1}S}S


 c 
donde {...}S indica la subcadena reconocida como perteneciente a S. Esta jerarquía también
se puede representar mediante un árbol sintáctico:

S
/|\


/|\
/ | \ c    c 

S '+' S
/|\ |
/|\ |
S '+' S '1'
| |
'1' '1'

O  O
c cc
 
c    c  
 c  


Este árbol es llamado árbol de sintaxis concreta de la cadena (ver también árbol de sintaxis
abstractaë. En este caso las derivaciones por la izquierda y por la derecha presentada
definen la sintaxis del árbol; sin embargo hay otra derivación (por la izquierdaë de la
misma cadena.

La derivación por la derecha:

Sĺ S + S (1ë
Sĺ 1 + S (2ë
Sĺ 1 + S + S (1ë
Sĺ 1 + 1 + S (2ë
Sĺ 1 + 1 + 1 (2ë

define el siguiente árbol sintáctico:


S


 c 
/|\
/|\
/ | \
S '+' S
| /|\
| /|\


'1' S '+' S
| | c    c 

'1' '1'

Si para una cadena del lenguaje de una gramática hay más de un árbol posible entonces se
dice que la gramática es ambigua. Normalmente estas gramáticas son más difíciles de
analizar por que el analizador no puede decidir siempre que producción aplicar.

 

O  O
c cc
 
c    c  
 c  


c"#
  

Cuando una cadena se deriva mediante una gramática libre de contexto el símbolo inicial
es sustituido por alguna cadena. Los símbolos no terminales de esta cadena son sustituidos
uno tras otro por otra cadena y así sucesivamente hasta que se llega a una cadena formada
sólo por símbolos terminales. A veces es útil realizar un gráfico de la derivación que
indique de qué manera ha contribuido cada no terminal a formar la cadena final de
símbolos terminales. Tal gráfico tiene forma de árbol y se llama árbol sintáctico.

Un árbol sintáctico para una derivación dada se construye creando un nodo raíz que se
etiqueta con el símbolo inicial. El nodo raíz tiene un nodo hijo para cada símbolo que
aparezca en el lado derecho de la producción usada para reemplazar el símbolo inicial.
Todo nodo etiquetado con un no terminal también tiene nodos hijos etiquetados con los


símbolos del lado derecho de la producción usada para sustituir ese no terminal. Los nodos


 c 
que no tienen hijos deben ser etiquetados con símbolos terminales.

 


c    c 

O  O
c cc
 
c    c  
 c  


$# 

Un % o también llamado &'( es una cadena de caracteres que tiene un


significado coherente en cierto lenguaje de programación.

Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un
programa surgen en la primera fase llamada análisis léxico sin embargo se siguen
utilizando en las siguientes fases (análisis sintáctico y análisis semánticoë antes de perderse
en la fase de síntesis.

Es el elemento léxico del lenguaje es decir el símbolo terminal de una gramática libre de
contexto (GLCë. Y por ultimo un (& es la secuencia de caracteres que coinciden con
un token.



 c 
$# )

'? [     )if while son cadenas fijas de letras.


'? * )Son cadenas definidas por el usuario; compuesta por lo general
de letras y números y que comienzan con una letra.
'? +& )como los símbolos aritméticos + * -. Además de algunos
símbolos compuestos de múltiples caracteres como son: <  = <.


c    c 

O  O
c cc
 
c    c  
 c  


[ #, c 

Con este trabajo conocimos mas acerca de los compiladores y como se analizan

sintácticamente las cadenas que son analizadas y que se hace mediante arboles que pueden

ser analizados por la derecha o por la izquierda.

También comprendí lo que son los token que son sobre los cuales se desarrolla la


traducción de un programa 


 c 

c    c 

O  O
c cc
 
c    c  
 c  


""-c./c

http://es.wikipedia.org/wiki/Analizador_sint%C3%A1ctico

http://www.monografias.com/trabajos16/automatas-y-gramaticas/automatas-y-
gramaticas.shtml

http://es.wikipedia.org/wiki/Gram%C3%A1tica_libre_de_contexto

http://es.wikipedia.org/wiki/Token_%28programaci%C3%B3n%29

http://www.slideshare.net/FARIDROJAS/analizador-lxico-presentation



 c 
http://valar.wordpress.com/2004/07/01/analizador-lexico/


c    c 

O  O

You might also like