2009-10-31 18 views
38

Wenn ich nennen:Wie spezifiziert man ein Zielpaket für ANTLR?

java org.antlr.Tool -o outdir sources/com/example/Java5.g 

... mit antlr-3.1.3 der Parser und Lexer-Code wird outdir/sources/com/example im Verzeichnis erzeugt werden. Aber die generierten Klassen haben keine package Anweisung. Ich brauche sie zum Leben im Paket com.example.

Gibt es eine Möglichkeit, das Zielpaket anzugeben?

+0

Ich bin mir sicher, dass es da ist. Ich werde es am Montag bei der Arbeit nachschlagen;) – Jorn

+0

Auf http://www.jguru.com/faq/view.jsp?EID=16185 erklären sie, wie man das Paket in die Grammatik einbetten kann. Aber gibt es eine Möglichkeit, es als Befehlszeilenparameter anzugeben? – tangens

Antwort

56

ANTLR bietet ein Header-Tool, mit dem Sie Pakete und Importe einbeziehen können. Sie umfassen diese in Ihrer * .B Grammatikdatei:

@header { 
    package org.xmlcml.cml.converters.antlr; 
    import java.util.HashMap; 
} 

Und Sie können es auch in der Lexer müssen:

@lexer::header {package org.xmlcml.cml.converters.antlr;} 

und falls Sie einige Mitglieder und Code hinzufügen müssen:

+2

Danke, dass du etwas über die Mitglieder und den Code geschrieben hast, obwohl er nicht danach gefragt hat. +1 –

22

Eine alte Frage mit einer vollkommen guten Antwort, aber da der Kommentar zu der Frage eine Befehlszeilenoption verlangte (und das war es, nach der ich eigentlich suchte, als ich hier ankam), dachte ich, ich würde nur klingeln in und sagen die fol Brüllen ...

Sie können das Paket auf der Kommandozeile specifiy wenn Sie ANTLR verwenden 4. Ich checked und es scheint nicht, dass es 3 in Version zu sein, so dass die other Antwort ist der Weg für ANTLR 3.

zu gehen Hier

ist ein Beispiel:

java -cp antlr-4.4-complete.jar org.antlr.v4.Tool -package my.package MyGram.g4 

Siehe -package Option bei ANTLR Tool Command Line Options für weitere Informationen.

+1

Die „ANTLR-Tool Befehlszeilenoptionen“ Dokumentation erfordert Anmeldeinformationen für den Zugriff. Hier ist eine offene Dokumentation von antlr4: https://github.com/antlr/antlr4/blob/master/doc/index.md – EFreak

+0

ANTLR Werkzeug Befehlszeilenoptionen: https://github.com/antlr/antlr4/blob/master /doc/tool-options.md – EFreak

+0

Dank @EFreak - ich den Link in der Frage auf Ihren Vorschlag – kmp

Verwandte Themen