ANALIZADOR SINTÁCTICO

10
ARBOLES DE DERIVACIÓN SINTÁCTICA Y TOKENS 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 ~ 1 ~

Transcript of ANALIZADOR SINTÁCTICO

Page 1: 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 ~

Page 2: 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

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 ~

Page 3: 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

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 ~

Page 4: 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

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 ~

Page 5: 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

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 ~

Page 6: 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

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 ~

Page 7: 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

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 ~