Herramientas para generar parsers

Solo disponible en BuenasTareas
  • Páginas : 23 (5728 palabras )
  • Descarga(s) : 0
  • Publicado : 7 de febrero de 2011
Leer documento completo
Vista previa del texto
Gold Parser
El Meta-lenguaje Gold es usado para definir las gramáticas utilizando el sistema Gold Parser. Está dividido en tres partes:
Reglas: Son especificadas usando la notación Backus-Naur según la siguiente sintaxis.
RuleName [ Newline ] [Nueva línea] ::= :: = [ Symbols [ Newline ] | ] ... [Símbolos [nueva línea] |] ...
Normalmente, las reglas de una gramática se declaran mediante BNF(Backus-Naur Form) declaraciones. Esta notación consiste en una serie de 0 o más símbolos no terminales que están delimitados por los paréntesis angulares '<' y '>' y terminales están delimitados por comillas simples o no delimitado en absoluto.
Por ejemplo, en la siguiente expresión se declara la común sentencia if.
<instrucción> | ::= | si <Expresión> entonces<sentencias> final si |
Los símbolos 'si', 'entonces', 'fin', y 'si' son los terminales y <Expresión> y <sentencias> son no terminales.
Si se declara una serie de normas que se derivan del mismo no terminal (es decir, diferentes versiones de una norma), puede utilizar un carácter de canalización única '|' en lugar del nombre de la regla y el símbolo "::=".
Terminales: Sonrepresentados a través de Expresiones Regulares según la siguiente sintaxis.
TerminalName [nueva línea] = = [ RegularExpression [ Newline ] | ] ... [Expresión regular [nueva línea] |] ...
La notación es bastante simple, pero lo suficientemente versátil como para expresar cualquier terminal que sea necesario. Básicamente, las expresiones regulares consisten en una serie de caracteres que definen elpatrón del terminal.
El conjunto literal de caracteres se delimitan con los corchetes '[' y ']' y los conjuntos definidos están delimitados por las llaves '{' y '}'. Por ejemplo, el texto "[abcde]" denota un conjunto de caracteres que consiste en las cinco primeras letras del alfabeto, mientras que el texto "{abc}" se refiere a un conjunto con nombre "abc". Ninguno de estas son parte de la notaciónde las expresiones regulares, pero son ampliamente utilizados en los generadores de programa de análisis tales como Lex / Yacc.
Sub-expresiones están delimitadas por paréntesis normales '(' y ')'. '|' El carácter de canalización se utiliza para referirse a las expresiones alternativas.
Existe un conjunto, una expresión sub, o un solo carácter puede ser seguida de cualquiera de los siguientestres símbolos:
* | Cierre de Kleene. Este símbolo significa 0 o más o el carácter especificado (s) |
+ | Uno o más. Este símbolo denota una o más de los caracteres especificada (s) |
? | Facultativo. Este símbolo marca el 0 o 1 por el carácter especificado (s) |
Por ejemplo, la expresión regular ab* se traduce en "un uno seguido de cero o más b 's" y [abc]+ se traduce en "una seriede uno o más 's,' b 's o c s".
Conjuntos Definidos: Son basados en la siguiente notación.
SetName [nueva línea] = = [ SetExpression [ Newline ] ( + | - ) ] ... [SetExpression [nueva línea] (+ | -)] ...
El conjunto literal de caracteres se delimitan con los corchetes '[' y ']' y los conjuntos predefinidos están delimitados por las llaves '{' y '}'. Por ejemplo, el texto "[abcde]" denota unconjunto de caracteres que consiste en las cinco primeras letras del alfabeto, mientras que el texto "{abc}" se refiere a un conjunto con nombre "abc".
Un conjunto, entonces, puede ser declarado por la suma y resta de literales y conjuntos literales declarados con anterioridad. El Generador de Gold ofrece una colección de conjuntos pre-definidos que contienen caracteres de uso frecuente para definirterminales.
Declaration | Resulting Set |
{Bracket} = [']'] | ] |
{Quote} = [''] | ' |
{Vowels} = [aeiou] | aeiou |
{Vowels 2} = {Vowels} + [y] | aeiouy |
{Set 1} = [abc] | abc |
{Set 2} = {Set 1} + [12] - [c] | ab12 |
{Set 3} = {Set 2} + [0123456789] | ab0123456789 |

Jlex y Cup
Jlex
Un archivo de entrada para JLex consta de 3 secciones:
1. Sección de código de usuario....
tracking img