---
title: 'Das ANTLR Eclipse-Plugin'
url: 'https://tutego.de/blog/javainsel/2007/07/das-antlr-eclipse-plugin'
markdown: 'https://tutego.de/blog/javainsel/2007/07/das-antlr-eclipse-plugin.md'
date: '2007-07-24'
description: 'Für den beliebten Parsergenerator ANTLR gibt es unter http://www.javadude.com/tools/antlr3-eclipse/ ein praktisches Plugin. Der Update-Manger von Eclipse wird auf die URL gelegt, installiert und neu gestartet. Anschließend geht man im Projekt auf das Kontextmenü und aktiviert Add/Remove ANTLR 3 Na…'
taxonomy:
  category:
    - Entwicklungsumgebung
    - Eclipse
---

# Das ANTLR Eclipse-Plugin

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Das ANTLR Eclipse-Plugin

24.07.2007 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Für den beliebten Parsergenerator ANTLR gibt es unter [http://www.javadude.com/tools/antlr3-eclipse/](http://www.javadude.com/tools/antlr3-eclipse/ "http://www.javadude.com/tools/antlr3-eclipse/") ein praktisches Plugin. Der Update-Manger von Eclipse wird auf die `URL` gelegt, installiert und neu gestartet. Anschließend geht man im Projekt auf das Kontextmenü und aktiviert **Add/Remove ANTLR 3 Nature**.

Als nächstes kann man eine ANTLR-Datei ablegen. Auf der Doku-Seite vom Plugin wird eine Grammatik (Datei *Expr.g3*) angegeben, die hier — leicht überarbeitet — angegeben werden soll:

```java
grammar Expr;@header {package com.tutego.script.fp;import java.util.HashMap;}@lexer::header {package com.tutego.script.fp;}@members {  HashMap memory = new HashMap();}prog:  stat + ;stat:  expr NEWLINE  {    System.out.println( $expr.value );  }    |   ID '=' expr NEWLINE        {          memory.put( $ID.text, $expr.value );        }    |   NEWLINE    ;expr returns [int value]:        e = multExpr { $value = $e.value; }        (    '+' e = multExpr { $value += $e.value; }   |   '-' e = multExpr { $value -= $e.value; }        )*    ;multExpr returns [int value]:        e = atom { $value = $e.value; }        (          '*' e = atom { $value *= $e.value; }        )*    ; atom returns [int value]:        INT        {         $value = Integer.parseInt($INT.text);        }       |   ID        {          Integer v = memory.get( $ID.text );          if ( v!=null ) $value = v.intValue();          else System.err.println( "Undefined variable " + $ID.text );        }            |   '(' expr ')' {$value = $expr.value;}    ;ID:  ('a'..'z' | 'A'..'Z') + ;INT:  '0'..'9' + ;NEWLINE:  '\r' ? '\n' ;WS:  (' ' | '\t') +  {   skip();  } ;
```

Bearbeiten lässt sich die Grammatik in Eclipse nicht ordentlich, doch dafür dient ja die [ANTLRWorks: The ANTLR GUI Development Environment](http://www.antlr.org/works/index.html).

Das Schöne beim Plugin: Es generiert automatisch im Hintergrund den Parser und Lexer. Das Testprogramm ist schnell geschrieben:

```java
package com.tutego.script.fp; import org.antlr.runtime.*; public class FpRunner{public static void main( String[] args ) throws Exception{ ExprLexer lex = new ExprLexer( new ANTLRStringStream("age=34\nage*2\n12*111\n") ); ExprParser parser = new ExprParser( new CommonTokenStream( lex ) ); try{parser.prog();}catch ( RecognitionException e ){e.printStackTrace();}}}
```

Die Ausgabe ist dann

68 1332

Kategorien: [Entwicklungsumgebung](https://tutego.de/blog/javainsel/category/entwicklungsumgebung/), [Eclipse](https://tutego.de/blog/javainsel/category/eclipse/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [sun.misc.Unsafe zur Objekterzeugung ohne Standard-Konstruktor](https://tutego.de/blog/javainsel/2007/07/sun-misc-unsafe-zur-objekterzeugung-ohne-standard-konstruktor.md)
- Next: [Danke für die Nutzung der Insel als Vorlage für Uni-Folien](https://tutego.de/blog/javainsel/2007/07/danke-fur-die-nutzung-der-insel-als-vorlage-fur-uni-folien.md)
