11.01.2015 Aufrufe

pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...

pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...

pdf (1820 Kb) - Fachgebiet Datenbanken und Informationssysteme ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

nerierten Klassen gelten soll, so wie Import-Anweisungen für die Parser <strong>und</strong> TokenManger-<br />

Klassen. Ein Beispiel für eine compilation_unit:<br />

PARSER_BEGIN(TestParser)<br />

package foo;<br />

public class TestParser {<br />

public static void main(String args[]) throws ParseException {<br />

eg1 parser = new eg1(System.in);<br />

try {<br />

TestParser.StartSymbol();<br />

System.out.println("Thank␣you.");<br />

} catch (Exception e) {<br />

System.out.println(e.getMessage());<br />

TestParser.ReInit(System.in);<br />

}<br />

}<br />

}<br />

PARSER_END(TestParser)<br />

Anschließend müssen die Produktionen für den Scanner <strong>und</strong> den Parser definiert werden.<br />

Der gesamte Aufbau der Grammatikdatei ist auf der javacc-Homepage in EBNF dokumentiert.<br />

Da die Produktionen sehr unterschiedlich aufgebaut sein können, ist die Definition<br />

in EBNF hier auch sehr sinnvoll, weswegen ich diese übernehme.<br />

Eine regular_expression_production wird durch eins der vier Schlüsselwörter TOKEN,<br />

SKIP, SPECIAL_TOKEN oder MORE eingeleitet, die den Umgang mit Wörtern dieses<br />

Ausdrucks festlegen. Gegebenenfalls wird dem Schlüsselwort eine Liste der Zustände, in<br />

denen der reguläre Ausdruck erkannt werden soll, vorangestellt.<br />

regular_expression_production ::=<br />

["" | ""]<br />

( TOKEN | SKIP | SPECIAL_TOKEN | MORE ) [IGNORE_CASE]":"<br />

"{" regexpr_spec ( | regexpr_spec )∗ "}"<br />

regexpr_spec ::=<br />

regular_expression [java_block_for_lexical_action][":" identifier_for_lexical_state ]<br />

regular_expression ::=<br />

java_string_literal<br />

| ""<br />

| ""<br />

| ""<br />

complex_regular_expression_choices ::=<br />

complex_regular_expression ( "|" complex_regular_expression )∗<br />

complex_regular_expression ::=<br />

( complex_regular_expression_unit )∗<br />

complex_regular_expression_unit ::=<br />

java_string_literal<br />

| ""<br />

| character_list<br />

| "(" complex_regular_expression_choices ")" [ "+" | "∗" | "" ]<br />

Beispiel:<br />

10

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!