Articulo de referencia

ANTR

En el reconocimiento de lenguaje por computadora, ANTLR (pronunciado antler ), u Otra herramienta para el reconocimiento de lenguaje , es un generador de analizador sintáctico q...

En el reconocimiento de lenguaje por computadora, ANTLR (pronunciado antler ), u Otra herramienta para el reconocimiento de lenguaje , es un generador de analizador sintáctico que utiliza un algoritmo LL(*) para el análisis. ANTLR es el sucesor del Purdue Compiler Construction Tool Set ( PCCTS ), desarrollado por primera vez en 1989, y se encuentra en desarrollo activo. Su mantenedor es el profesor Terence Parr de la Universidad de San Francisco . [ cita requerida ]

PCCTS 1.00 se anunció el 10 de abril de 1992. [1] [2]

Uso

ANTLR toma como entrada una gramática que especifica un lenguaje y genera como salida el código fuente para un reconocedor de ese lenguaje. Mientras que la versión 3 admitía la generación de código en los lenguajes de programación Ada95 , ActionScript , C , C# , Java , JavaScript , Objective-C , Perl , Python , Ruby y Standard ML , [3] la versión 4 actualmente apunta a C#, C++, Dart , [4] [5] Java, JavaScript, Go , PHP , Python (2 y 3) y Swift .

Un lenguaje se especifica utilizando una gramática libre de contexto expresada utilizando la Forma Extendida Backus–Naur (EBNF). [ cita requerida ] [6] ANTLR puede generar analizadores léxicos , analizadores sintácticos , analizadores sintácticos de árbol y analizadores léxicos-analizadores combinados . Los analizadores sintácticos pueden generar automáticamente árboles de análisis sintáctico o árboles de sintaxis abstracta , que pueden procesarse posteriormente con analizadores sintácticos de árbol. ANTLR proporciona una única notación consistente para especificar analizadores léxicos, analizadores sintácticos y analizadores sintácticos de árbol.

De forma predeterminada, ANTLR lee una gramática y genera un reconocedor para el lenguaje definido por la gramática (es decir, un programa que lee un flujo de entrada y genera un error si el flujo de entrada no se ajusta a la sintaxis especificada por la gramática). Si no hay errores de sintaxis, la acción predeterminada es simplemente salir sin imprimir ningún mensaje. Para hacer algo útil con el lenguaje, se pueden adjuntar acciones a los elementos de la gramática en la gramática. Estas acciones se escriben en el lenguaje de programación en el que se está generando el reconocedor. Cuando se está generando el reconocedor, las acciones se incrustan en el código fuente del reconocedor en los puntos apropiados. Las acciones se pueden utilizar para crear y verificar tablas de símbolos y para emitir instrucciones en un lenguaje de destino, en el caso de un compilador. [ cita requerida ] [6]

Además de los analizadores léxicos y sintácticos, ANTLR se puede utilizar para generar analizadores sintácticos de árboles. Estos son reconocedores que procesan árboles de sintaxis abstracta, que pueden ser generados automáticamente por los analizadores sintácticos. Estos analizadores sintácticos de árboles son exclusivos de ANTLR y ayudan a procesar árboles de sintaxis abstracta. [ cita requerida ] [6]

Licencias

ANTLR 3 [ cita requerida ] y ANTLR 4 son software libre , publicados bajo una licencia BSD de tres cláusulas . [7] Las versiones anteriores se publicaron como software de dominio público . [8] La documentación, derivada del libro de Parr The Definitive ANTLR 4 Reference , se incluye con el código fuente de ANTLR 4 con licencia BSD. [7] [9]

Se han desarrollado varios complementos para el entorno de desarrollo de Eclipse para soportar la gramática ANTLR, incluido ANTLR Studio , un producto propietario , así como los complementos "ANTLR 2" [10] y "ANTLR 3" [11] para Eclipse alojados en SourceForge . [ cita requerida ]

ANTLR 4

ANTLR 4 trata correctamente la recursión izquierda directa , pero no la recursión izquierda en general, es decir, las reglas gramaticales x que hacen referencia a y que hacen referencia a x . [12]

Desarrollo

Como se informa en la página de herramientas [13] del proyecto ANTLR, los complementos que habilitan funciones como resaltado de sintaxis, verificación de errores de sintaxis y finalización de código están disponibles gratuitamente para los IDE más comunes ( Intellij IDEA, NetBeans , Eclipse , Visual Studio [14] y Visual Studio Code ).

Proyectos

El software creado con ANTLR incluye:

Más de 200 gramáticas implementadas en ANTLR 4 están disponibles en GitHub . [20] Van desde gramáticas para una URL hasta gramáticas para lenguajes enteros como C, Java y Go.

Ejemplo

En el siguiente ejemplo, un analizador en ANTLR describe la suma de expresiones que se pueden ver en la forma de "1 + 2 + 3":

 // Opciones comunes, por ejemplo, el idioma de destino 
options { language = "CSharp"; } // Seguido por la clase del analizador SumParser extends Parser; options { k = 1 ; // Lookahead del analizador: 1 token } // Definición de una declaración de expresión : INTEGER ( PLUS ^ INTEGER )* ; // Aquí está la clase Lexer SumLexer extends Lexer; options { k = 1 ; // Lookahead del analizador: 1 caracteres } PLUS : '+' ; DIGIT : ( '0' .. '9' ) ; INTEGER : ( DIGIT )+ ; 
 
    
 
 
    
 
 
      
 
 
    
 
    
 
 
      
 
  
  
  

La siguiente lista demuestra la llamada del analizador en un programa:

 TextReader lector ; // (...) Rellena TextReader con el carácter SumLexer lexer = new SumLexer ( lector ); SumParser parser = new SumParser ( lexer ); 
 
     
     

 analizador . declaración ();

Véase también

Referencias

  1. ^ "Comp.compilers: Purdue Compiler-Construction Tool Set 1.00 disponible". compilers.iecc.com . 10 de abril de 1992 . Consultado el 5 de mayo de 2023 .
  2. ^ "Comp.compilers: Más sobre PCCTS". compilers.iecc.com . 30 de abril de 1992 . Consultado el 5 de mayo de 2023 .
  3. ^ Herramientas de procesamiento del lenguaje SML/NJ: Guía del usuario
  4. ^ "Bibliotecas de tiempo de ejecución y objetivos de generación de código". github . 6 de enero de 2022.
  5. ^ "El entorno de ejecución de C++ ANTLR4 ha llegado a casa – Soft Gems". 16 de noviembre de 2016.
  6. ^ abc Parr, Terence (15 de enero de 2013). La referencia definitiva de ANTLR 4. Pragmatic Bookshelf. ISBN 978-1-68050-500-9.
  7. ^ desde "antlr4/LICENSE.txt". GitHub . 30 de marzo de 2017.
  8. ^ Parr, Terence (5 de febrero de 2004). "Licencias". antlr-interest (Lista de correo). Archivado desde el original el 18 de julio de 2011. Consultado el 15 de diciembre de 2009 .
  9. ^ "Documentación de ANTLR 4". GitHub . 30 de marzo de 2017.
  10. ^ "Complemento ANTLR para Eclipse".
  11. ^ "ANTLR IDE. Un complemento de Eclipse para gramáticas ANTLR".
  12. ^¿ Cuál es la diferencia entre ANTLR 3 y 4?
  13. ^ "Herramientas de desarrollo ANTLR".
  14. ^ "Compatibilidad con idiomas ANTLR - Visual Studio Marketplace".
  15. ^ "Reconocedor Groovy (Groovy 2.4.0)".
  16. ^ "Jython: 31d97f0de5fe".
  17. ^ Ebersole, Steve (6 de diciembre de 2018). "Hibernate ORM 6.0.0.Alpha1 publicado". En relación con, el blog del equipo de Hibernate sobre todo lo relacionado con los datos . Consultado el 11 de julio de 2020 .
  18. ^ "OpenJDK: Gramática del compilador".
  19. ^ "Testimonios de ANTLR" . Consultado el 30 de octubre de 2024 .
  20. ^ Gramáticas escritas para ANTLR v4; se espera que las gramáticas estén libres de acciones.: antlr/grammars-v4, Proyecto Antlr, 2019-09-25 , consultado el 2019-09-25

Bibliografía

  • Parr, Terence (17 de mayo de 2007), The Definitive Antlr Reference: Building Domain-Specific Languages ​​(1.ª ed.), Pragmatic Bookshelf , pág. 376, ISBN 978-0-9787392-5-6
  • Parr, Terence (diciembre de 2009), Patrones de implementación de lenguajes: cree sus propios lenguajes de programación generales y específicos de dominio (1.ª ed.), Pragmatic Bookshelf , pág. 374, ISBN 978-1-934356-45-6
  • Parr, Terence (15 de enero de 2013), The Definitive ANTLR 4 Reference (1.ª ed.), Pragmatic Bookshelf , pág. 328, ISBN 978-1-93435-699-9

Lectura adicional

  • Parr, TJ; Quong, RW (julio de 1995). "ANTLR: un generador de analizador sintáctico predicado-LL(k)". Software: práctica y experiencia . 25 (7): 789–810. CiteSeerX  10.1.1.54.6015 . doi :10.1002/spe.4380250705. S2CID  13453016.
  • Sitio web oficial
  • Tutorial de ANTLR (mega)
  • ¿Por qué utilizar ANTLR?
  • Estudio ANTLR
Obtenido de "https://es.wikipedia.org/w/index.php?title=ANTLR&oldid=1260197327"