ANTLRAan de slag met ANTLR


Opmerkingen

ANTLR (ANother Tool voor taalherkenning) is een krachtige parser-generator voor het lezen, verwerken, uitvoeren of vertalen van gestructureerde tekst of binaire bestanden. Het wordt veel gebruikt om talen, tools en frameworks te bouwen. Vanuit een grammatica genereert ANTLR een parser die parse-bomen kan bouwen en lopen.

Antlr-versies
Antlr is gescheiden in twee grote delen, de grammatica (grammaticabestanden) en de gegenereerde codebestanden, die voortvloeien uit de grammatica op basis van de doeltaal. De antlr-versies hebben de indeling V1.V2.V3:

  • V1: Wijziging in V1 betekent dat nieuwe syntaxis van functies werd geïntroduceerd in grammaticabestanden
  • V2: Wijziging in V2 betekent dat nieuwe functies of belangrijke fixes zijn geïntroduceerd in de gegenereerde bestanden (bijv. Toevoeging van nieuwe functies)
  • V3: staat voor bugfixes of kleine verbeteringen

Runtime-bibliotheken en codegeneratiedoelen
De Antlr-tool is geschreven in Java, maar kan wel parsers en lexers in verschillende talen genereren. Als u de parser en lexer wilt uitvoeren, hebt u ook de runtime-bibliotheek van antlr nodig, samen met de parser en lexer-code. De ondersteunde doeltaal (en runtime-bibliotheken) zijn de volgende:

  • Java

  • C #

  • Python (2 en 3)

  • JavaScript

versies

Versie Publicatiedatum
2.0 1997/05/01
3.0 2011-01-19
4.0 2013/01/21
4.1 2013/07/01
4.2 2014/02/05
4.2.1 2014/03/25
4.2.2 2014/04/07
4.3 2014/06/19
4.4 2014/07/16
4.5 2015/01/23
4.5.1 2016/07/16
4.5.2 2016/01/30
4.5.3 2016/03/31
4.6 2016/12/15
4.7 2017/03/30

Hallo Wereld

Een eenvoudige Hello World grammatica kan worden gevonden hier :

// define a grammar called Hello
grammar Hello;
r   : 'hello' ID;
ID  : [a-z]+ ;
WS  : [ \t\r\n]+ -> skip ;
 

Om dit .g4-voorbeeld te bouwen, kunt u de volgende opdracht uitvoeren vanaf de terminal / opdrachtregel van uw besturingssysteem:

Java -jar antlr-4.5.3-complete.jar Hello.g4

//OR if you have setup an alias or use the recommended batch file

antlr4 Hello.g4
 

Het bouwen van dit voorbeeld moet resulteren in de volgende uitvoer in de bestandsmap Hello.g4:

  1. Hello.tokens
  2. HelloBaseListener.java
  3. HelloLexer.java
  4. HelloLexer.tokens
  5. HelloListener.java
  6. HelloParser.java

Wanneer u deze bestanden in uw eigen project gebruikt, moet u het ANTLR jar-bestand opnemen. Voer de volgende opdracht uit om al deze bestanden te compileren met Java, in dezelfde map of per pad:

javac *.java