Herramientas de usuario

Herramientas del sitio


otros:compilers

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
otros:compilers [2009/11/07 19:23]
alfred
otros:compilers [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
 ====== Compiladores ====== ====== Compiladores ======
 Para crear un compilador necesitamos un analizador léxico (o //​scanner//​) analiza el texto, y un analizador sintáctico (o //parser//) el que analiza la estructura del texto y realiza las acciones necesarias según esta. El analizador léxico recorre el texto y va pasando las porciones útiles (//​tokens//​) al parser, este actuará según la estructura en la que estén colocados los tokens. Para crear un compilador necesitamos un analizador léxico (o //​scanner//​) analiza el texto, y un analizador sintáctico (o //parser//) el que analiza la estructura del texto y realiza las acciones necesarias según esta. El analizador léxico recorre el texto y va pasando las porciones útiles (//​tokens//​) al parser, este actuará según la estructura en la que estén colocados los tokens.
-   * Para Java el creador de analizadores léxicos se llama [[#​jflex|JFlex]] y el creador de parsers [[#​cup|CUP]]. Estas son herramientas a las que se les pasa código y, a partir de este, generan el analizador o el parser.+  ​* Para Java el creador de analizadores léxicos se llama [[#​jflex|JFlex]] y el creador de parsers [[#​cup|CUP]]. Estas son herramientas a las que se les pasa código y, a partir de este, generan el analizador o el parser
 +  * Los nombrados anteriormente son versiones de los primeros creadores Lex y Yacc. 
 +  * Actualmente existen otros generadores de parsers como son [[http://​www.gnu.org/​software/​bison/​|Bison]],​ [[http://​www.antlr.org/​|ANTLR]]...
  
 ===== JFlex ===== ===== JFlex =====
Línea 289: Línea 291:
 </​code>​ </​code>​
 {{otros:​compilers:​flex_and_cup.tar.gz|Aquí}} un par de ejemplos. {{otros:​compilers:​flex_and_cup.tar.gz|Aquí}} un par de ejemplos.
 +
  
  
Línea 301: Línea 304:
 <​code>​ <​code>​
 terminal WORD, COMA, NUMBER, DOSPUNTOS, CORCHIZQ, CORCHDER; terminal WORD, COMA, NUMBER, DOSPUNTOS, CORCHIZQ, CORCHDER;
- 
 terminal STARTPROGRAM,​ ENDPROGRAM, STARTCODE, ENDCODE, STARTDECVAR,​ ENDDECVAR, STARTMACRO, ENDMACRO, STARTDECMACRO,​ ENDDECMACRO;​ terminal STARTPROGRAM,​ ENDPROGRAM, STARTCODE, ENDCODE, STARTDECVAR,​ ENDDECVAR, STARTMACRO, ENDMACRO, STARTDECMACRO,​ ENDDECMACRO;​
- 
 terminal COMANDO, REGISTRO, TIPO; terminal COMANDO, REGISTRO, TIPO;
- 
- 
- 
 nonterminal programa, name, bloccodi, codi, liniacodi, blocvariables,​ blocmacros, decvars, valor, macro, decmacros, etiqueta; nonterminal programa, name, bloccodi, codi, liniacodi, blocvariables,​ blocmacros, decvars, valor, macro, decmacros, etiqueta;
- 
 nonterminal memaddr, operando1, operando2; nonterminal memaddr, operando1, operando2;
- 
 </​code>​ </​code>​
 Luego la creación de la gramática se haría con la estructura explicada anteriormente,​ pero con la siguiente sintaxis: Luego la creación de la gramática se haría con la estructura explicada anteriormente,​ pero con la siguiente sintaxis:
Línea 356: Línea 352:
        ;        ;
 </​code>​ </​code>​
-Corresponde a una lista de expresiones donde  
  
-===== Compiladores con Python ​===== + 
-===== Compiladores con .NET =====+ 
 + 
 + 
 +===== Notas ===== 
 +  * La herramienta de Python para generar analizadores léxicos y sintácticos es la denominada PLY (que se encuentra [[http://​www.dabeaz.com/​ply/​index.html|aquí]]),​ su nombre viene de //Python Lex Yacc//. 
 + 
  
otros/compilers.1257621837.txt.gz · Última modificación: 2020/05/09 09:25 (editor externo)