ANTLR
Inleiding tot ANTLR v3
Zoeken…
Installatie en instellingen
Hoe ANTLR in Eclipse te installeren
(Laatst getest op Indigo en ANTLR IDE 2.1.2)
- Eclipse installeren.
- Download ANTLR complete binaries-pot met ANTLR v2. Uitpakken naar een tijdelijke map. Kopieer de map antlr-nn naar een geschikte permanente locatie, bijvoorbeeld dezelfde map waarin Eclipse is geïnstalleerd.
- ANTLR IDE-updatesite toevoegen aan Eclipse.
- Klik in Eclipse op Help en selecteer Nieuwe software installeren.
- Klik op de knop Toevoegen ...
- Typ in het venster Repository toevoegen voor Locatie type http://antlrv3ide.sourceforge.net/updates en typ zoiets als ANTLR IDE voor de Naam en klik op OK om terug te gaan naar het venster Beschikbare software.
- Vink het vakje aan voor ANTLR IDE vn.nn en klik door tot het is geïnstalleerd. Eclipse zal waarschijnlijk opnieuw opstarten.
- Configureer de ANTLR IDE.
- Klik in het hoofdvenster van Eclipse op Venster en vervolgens op Voorkeuren.
- Vouw ANTLR in het linkerdeelvenster uit en selecteer Builder.
- Klik in het rechterdeelvenster op de knop Toevoegen ...
- Klik in het venster ANTLR-pakket toevoegen op Directory… en navigeer naar de locatie van de map antlr-nn en klik op OK.
- Klik op OK om het venster ANTLR-pakket toevoegen te sluiten.
- Selecteer Codegenerator in het linkerdeelvenster en klik op Project relatieve map in het rechterdeelvenster. Typ een mapnaam. Voorbeelden: antlr-java of antlr-gegenereerd.
- Selecteer andere configuratieparameters maar vink NIET –nfa of –dfa aan onder Algemeen in het venster Gebouw. Indien aangevinkt, zullen deze ANTLR-fouten veroorzaken waardoor Java-bestanden niet in de uitvoermap kunnen worden gegenereerd.
- Klik op OK om het venster Voorkeuren te sluiten.
- Maak een nieuw Java-project en schakel ANTLR-ondersteuning in.
- Ga vanuit het hoofdvenster van Eclipse naar Bestand, Nieuw, Java-project. Klik op Volgende, typ een projectnaam en klik op Voltooien.
- Als u ANTLR-ondersteuning voor het project wilt inschakelen, klikt u in het venster Pakketverkenner (linkerdeelvenster) met de rechtermuisknop op het zojuist gemaakte project en selecteert u Configureren, Converteren naar ANTLR-project.
- Voeg het ANTLR jar-bestand toe aan het project: klik met de rechtermuisknop op het project en selecteer Eigenschappen, Java Build Path, klik op Externe JAR's toevoegen ..., blader naar het ANTLR jar-bestand, selecteer het en klik op OK. Klik op OK om het venster met projecteigenschappen te sluiten.
- Maak een ANTLR-grammatica.
- Maak een nieuwe ANTLR-grammatica: klik met de rechtermuisknop op de map src van het project en vervolgens op Bestand, Nieuw, Overige, vouw ANTLR uit en selecteer Gecombineerde grammatica. Klik op Volgende, typ de naam van de grammatica, selecteer een taaloptie en klik op Voltooien.
- Een ".g" -bestand wordt gemaakt met de geselecteerde opties en een lege regel. Voeg bovenaan de opties taal = Java, @header, @lexer :: header en @members-instructies toe (zie voorbeeld). Automatisch aanvullen is de eenvoudigste manier om deze toe te voegen (druk op CTRL-spatie om de lijst voor automatisch aanvullen te openen).
- Bewaar de grammatica.
- Wanneer opgeslagen, zou een map met gegenereerde Java-code voor de grammatica in de Project Explorer moeten verschijnen. Als dit niet het geval is, controleert u of de opties –nfa of –dfa niet zijn aangevinkt in ANTLR-voorkeuren onder Algemeen in het venster Gebouw (stap 4g). [Bevestig indien nodig: vink CLASSPATH omgevingsvariabele punten aan naar de Java7 die overeenkomt met uw Eclipse-installatie (32 of 64 bits) en Windows Path omgevingsvariabele had Java7 SDK.]
- Om te voorkomen dat "Java-fouten niet kunnen worden opgelost", klikt u met de rechtermuisknop op de map met de gegenereerde Java-code en vervolgens op Pad bouwen, Gebruik als bronmap.
VOORBEELD GECOMBINEERDE GRAMMAR
grammar test; //must match filename.g
options {
language = Java;
}
@header { //parser
package pkgName; //optional
import java.<whatever you need>.*;
}
@members { //parser
// java code here
}
@lexer::header { //lexer
package pkgName; //optional
import java.<whatever you need>.*;
}
@lexer::members {
// java code here
}
/*------------------------------------------------------------------
* PARSER RULES (convention is all lowercase)
*------------------------------------------------------------------*/
parserule: LEXRULE;
/*------------------------------------------------------------------
* LEXER RULES (convention is all uppercase)
*------------------------------------------------------------------*/
LEXRULE: 'a'..'z';
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow