ANALIZADOR SINTÁCTICO
-
Upload
mlmlna-dominguez -
Category
Documents
-
view
427 -
download
0
Transcript of ANALIZADOR SINTÁCTICO
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
ANALIZADOR SINTÁCTICO.
Un analizador sintáctico (en inglés parser) 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.
Derivaciones y árboles sintácticos
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
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 derivación por la izquierda. Por ejemplo, si tomamos la siguiente
gramática:
(1) S → S + S
(2) S → 1
La cadena "1 + 1 + 1", su derivación a la izquierda está en la lista [(1) (1) (2) (2) (2)].
Análogamente, la derivación por la derecha 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)].
~ 1 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
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
donde {...}S indica la subcadena reconocida como perteneciente a S. Esta jerarquía también
se puede representar mediante un árbol sintáctico:
S
/|\
/ | \
/ | \
S '+' S
/|\ |
/ | \ |
S '+' S '1'
| |
'1' '1'
~ 2 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
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
/|\
/ | \
/ | \
S '+' S
| /|\
| / | \
'1' S '+' S
| |
'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.
~ 3 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
ARBOLES SINTÁCTICOS.
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
que no tienen hijos deben ser etiquetados con símbolos terminales.
~ 4 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
TOKEN.
Un token o también llamado componente léxico 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 lexema es la secuencia de caracteres que coinciden con
un token.
TOKENS:
Palabras reservadas: if, while, son cadenas fijas de letras.
Identificadores: Son cadenas definidas por el usuario; compuesta por lo general
de letras y números y que comienzan con una letra.
Símbolos especiales: como los símbolos aritméticos +, * , -. Además de algunos
símbolos compuestos de múltiples caracteres como son: <,>, = , <>.
~ 5 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
PUNTO DE VISTA.
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
~ 6 ~
AR
BO
LE
S D
E D
ER
IVA
CIÓ
N S
INT
ÁC
TIC
A Y
TO
KE
NS
ANALIZADOR SINTÁCTICO
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS
BIBLIOGRAFÍA.
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
http://valar.wordpress.com/2004/07/01/analizador-lexico/
~ 7 ~