Sintaxis bnf
• Metalenguaje B.N.F.
– Notación para especificar una gramática generativa: define el conjunto de cadenas que son programas del LP sujeto, junto con suestructura sintáctica – Permite describir lenguajes con una sintaxis “independiente del contexto”
Metalenguaje B.N.F. (Forma de Backus-Naur)
símbolos no-terminales (uno de ellos distinguido)
• •para describir los constructores sintácticos del LP sujeto para describir los símbolos (texto) del LP sujeto
símbolos terminales reglas de producción
• una regla con (alternativas) para cada símb.no-terminal • cada alternativa: cadena de terminales y/o no-terminales Ejemplos: ::= if then fi | if then else fi ::=
FLP 2009/10 - Marisa Navarro 2
• Gramáticas de atributos
– Extensiónde B.N.F. mediante atributos y reglas de evaluación de dichos atributos. – Permite describir lenguajes con hechos sintácticos “dependientes del contexto”
FLP 2009/10 - Marisa Navarro 1
• Se permiterecursión en las reglas de producción
– a izquierdas: ::= | ; – a derechas: ::= | ;
• Gramática ambigua:
– Para una cadena terminal hay más de un árbol sintáctico Ejemplo: ::= x | y | z| () | + | * (recursión a izquierda y derecha para un mismo símbolo no-term.) Dos árboles sintácticos para la cadena x + y * z : + x * z
• Estructura sintáctica
=>
árbol sintácticoEjemplo (parte de un árbol): if then ; fi
* y z
+ x y
FLP 2009/10 - Marisa Navarro
3
FLP 2009/10 - Marisa Navarro
4
• Evitar la doble recursividad:
– introduciendonuevos símbolos no-terminales (dejando * y + al mismo nivel) ::= | + | * ::= x | y | z | () misma prioridad para * y + , y asociatividad a izquierdas – introduciendo nuevos símbolos no-terminales(dejando * y + a distinto nivel) ::= | + ::= | * ::= x | y | z | () prioridad de * respecto de + , y asociatividad a izquierdas para ambas operaciones.
FLP 2009/10 - Marisa Navarro 5
–...
Regístrate para leer el documento completo.