Вы находитесь на странице: 1из 23

RBOLES DE SINTAXIS

RBOL grafo dirigido acclico.

Los nodos no terminales (nodos interiores) estn rotulados por los


smbolos no terminales.

Los nodos terminales (nodos hojas) estn rotulados por los smbolos
terminales.

Las reglas de produccin de la gramtica relacionan cada nodo no


terminal y sus hijos.
rbol de sintaxis de una oracin

Oracin

Sujeto Verbo Objeto

Sustantivo

I see the cat .


Sea G una gramtica libre de contexto un rbol de
sintaxis de G es un rbol rotulado y ordenado, con las
siguientes propiedades:

para cualquier smbolo no terminal N de G, un N-rbol tiene


un nodo raz rotulado por N. Sus subrboles pueden ser un
X1-rbol, ......, Xn-rbol (de izquierda a derecha) solamente si
N::= X1..... Xn es una regla de produccin de G. (si la regla de
produccin es N::= , el N-rbol no tiene subrboles

Para cualquier smbolo terminal t de G, un t-rbol es un


nico nodo terminal rotulado por t.
Ejemplo
1) Dada la regla de produccin

Nmero ::= Dgito


| Nmero Dgito

Un nmero-rbol posible es

Nmero

Nmero Dgito

Dgito

4 0
Ejemplo
2) Dado el comando 3*9= y teniendo en cuenta las reglas de
produccin para formar comandos y expresiones (Ejemplo de la
calculadora), el rbol de sintaxis correspondiente es:
Comando

Expresin

Expresin Nmero
Nmero

Dgito Dgito

3 * 9 =
FRASES, SENTENCIAS y
LENGUAJE
Sea G una Gramtica Libre de Contexto.

Una frase de G es una cadena de smbolos terminales, los que forman


una N-frase de G para cada smbolo no terminal N de G.

Una sentencia de G, es una S-frase de G, donde S es el smbolo de


partida de G.

El lenguaje generado por G, es el conjunto de todas las sentencias de


G.
Por ejemplo :
I see the cat . es una Sentencia-frase de G.

I es un Sujeto-frase

see es un Verbo-frase

the cat es un Objeto-frase.

I, see y the cat son cadenas de smbolos terminales.


En el ejemplo de la
Calculadora:

3, 40 y 365 son Numeros-frases

3*9 y 40-3*9 son Expresiones-frases

3*9= y 40-3*9= son Comandos-frases


INTERPRETACIN DE LOS
RBOLES DE SINTAXIS
Los rboles de sintaxis pueden ser usados para darle un significado a
la sentencia, aplicando algn tipo de interpretacin de semntica
al mismo.

Sea el comando ' 40 - 3 * 9 = ' en el ejemplo de la calculadora

Comando

Expresin
Expresin Nmero Este rbol sugiere que el
Expresin Nmero comando se calcular como:
Nmero (40-3)*9 =

40 - 3 * 9 =
AMBIGEDAD
El siguiente ejemplo muestra que una gramtica diseada sin cuidado
puede ser ambigua con respecto a alguna sentencia.

Ejemplo: consideremos una variacin de la regla de produccin de la


gramtica G para Expresin en el ejemplo de la calculadora:

Expresin ::= Nmero


| Expresin + Expresin
| Expresin - Expresin
| Expresin * Expresin
y mantenemos las otras reglas de produccin.
La gramtica G resulta ambigua con respecto a algunas de las
expresiones como por ejemplo, la expresin "40 - 3- 9 " puesto
que sta se corresponde con dos rboles de sintaxis diferentes.

Expresin Expresin

Expresin Expresin Expresin Expresin

Expresin Expresin Nmero Nmero Expresin Expresin

Nmero Nmero Nmero Nmero

40 - 3 - 9 40 - 3 - 9

Interpretacin: (40 - 3) - 9 40 - (3 - 9)
Ejemplo 2
Sea la siguiente regla de produccin en el lenguaje de programacin
L.

Com ::= Var:=Expr


| if Expr then Com
| if Expr then Com else Com

donde:
Com nombra la clase de comandos.
E y E expresiones arbitrarias y
C y C comandos arbitrarios (tales como asignaciones).

Luego el comando

if E then if E then C else C es ambiguo


rboles de sintaxis para Com
Com

Expr Com
Expr Com Com

if E then if E then C else C Com

Expr Com Com

Expr Com

if E then if E then C else C


RECONOCIMIENTO y ANLISIS
SINTCTICO
El RECONOCIMIENTO de una cadena terminal en una gramtica G es
decidir si la cadena es o no una sentencia de G, de acuerdo a las
reglas de G.

El ANLISIS SINTCTICO o "parsing" de una cadena terminal, en una


gramtica G es el reconocimiento ms la reconstruccin del(los)
rbol(es) de sintaxis de la cadena, de acuerdo a las reglas de G.

El anlisis sintctico es necesario para deducir cada estructura de


frase de la sentencia y luego determinar su significado.
Ejemplo:
Consideremos las reglas de la gramtica del ejemplo de la
calculadora:

Comando Expresin Expresin

Expresin = Nmero Expresin + Nmero

(a) (b) (c)

Expresin Expresin

Expresin - Nmero Expresin * Nmero


(d) (e)
Analizaremos la cadena terminal:

40 - 3 * 9 =

(1) 40, 3 y 9 son Nmero -frases

Nmero Nmero Nmero

40 - 3 * 9 =
(2) Hacemos corresponder el nmero 40con el fragmento del rbol
(b)
Expresin

Nmero Nmero Nmero

40 - 3 * 9 =

3) El fragmento de rbol (b), el terminal - y el nmero 3, podemos


corresponderlos con el fragmento de rbol (d)

Expresin

Expresin

Nmero Nmero Nmero

40 - 3 * 9 =
(4) El ltimo fragmento de rbol, el terminal * y el nmero 9,
podemos corresponderlos con el fragmento del rbol (e):

Expresin

Expresin

Expresin

Nmero Nmero Nmero

40 - 3 * 9
Comando

(5) El ltimo fragmento del rbol y el terminal =, podemos


corresponderlos con el fragmento de rbol (a)
Comando

Expresin

Expresin Nmero

Expresin Nmero

Nmero

40 - 3 * 9 =
AUTOINCLUSIN
(Anidamiento)
Las gramticas Libres de Contexto son muy efectivas para
especificar estructuras de frases anidadas (self-embedded)

Ejemplo: Pascal tiene:

(a) expresiones anidadas:


a - (b + c)
sin (2 * x)

(b) comandos anidados:

if a > b then m := a else m := b

begin x := 0; y := 0 end
Una gramtica libre de contexto G es anidada si, para algunos
smbolos no terminales N de G, existe una N-frase tal que es
tambin una N-frase y tal que tanto como son cadenas
terminales no vacas.

El anidamiento

Recursividad en las Reglas de produccin

Por ejemplo:
Com::= Var:= Expr
| if Expr then Com
| if Expr then Com else Com

Es una regla recursiva.

Вам также может понравиться