45 lines
1.1 KiB
Plaintext
45 lines
1.1 KiB
Plaintext
/* **********************************************
|
|
* Duale Hochschule Baden-Württemberg Karlsruhe
|
|
* Prof. Dr. Jörn Eisenbiegler
|
|
*
|
|
* Vorlesung Übersetzerbau
|
|
* Praxis ANTLR-Parser für X
|
|
* - Grammatik für Scanner und Parser
|
|
*
|
|
* **********************************************
|
|
*/
|
|
|
|
grammar X;
|
|
|
|
options {
|
|
language = Java;
|
|
output = AST;
|
|
ASTLabelType = CommonTree;
|
|
backtrack = true;
|
|
}
|
|
|
|
// AST-Tokens
|
|
tokens {
|
|
ID;
|
|
INTCONST;
|
|
FLOATCONST;
|
|
WS;
|
|
}
|
|
|
|
@parser::header {package de.dhbw.compiler.antlrxparser;}
|
|
@lexer::header {package de.dhbw.compiler.antlrxparser;}
|
|
|
|
// Anmerkung: Es müssen Lexer- UND Parser-Regeln stehen, da sonst das Generieren nicht funktionieren
|
|
// Lexer stuff
|
|
ID: ('a'..'z' | 'A'..'Z')
|
|
(options {
|
|
greedy = true; // Lese alle möglichen Zeichen ein -> Zahlen in ID -> bleibt weiterhin ID
|
|
}: 'a'..'z' | 'A'..'Z' | '0'..'9')*;
|
|
INTCONST: ('0'..'9')+;
|
|
FLOATCONST: INTCONST '.' INTCONST;
|
|
|
|
WS: ('\t' | ' ' | '\r' | '\n' | '\f')+ { skip(); };
|
|
|
|
// Parser stuff
|
|
program: 'TODO';
|