Example
Matches input such as public static int i = 3;.
Here's a main program to invoke the parser on the file argument from command-line.
import java.io.*;
import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;
public class Test {
public static void main(String args[]) throws Exception {
TLexer lex = new TLexer(new ANTLRFileStream(args[0]));
CommonTokenStream tokens = new CommonTokenStream(lex);
TParser parser = new TParser(tokens);
TParser.startRule_return r = parser.startRule(); if ( r!=null ) System.out.println(((CommonTree)r.tree).toStringTree());
}
}
Here is a test rig for building an AST with a parser and walking it with a tree parser:
import java.io.*;
import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;
public class Test {
public static void main(String args[]) throws Exception {
TLexer lex = new TLexer(new ANTLRFileStream(args[0]));
CommonTokenStream tokens = new CommonTokenStream(lex);
TParser parser = new TParser(tokens); TParser.startRule_return r = parser.startRule(); if ( r!=null ) System.out.println(((CommonTree)r.tree).toStringTree());
CommonTreeNodeStream nodes = new CommonTreeNodeStream((Tree)r.tree);
nodes.setTokenStream(tokens);
TP walker = new TP(nodes); TP.startRule_return r2 = walker.startRule();
CommonTree rt = ((CommonTree)r2.tree);
if ( rt!=null ) System.out.println(((CommonTree)r2.tree).toStringTree());
}
}
ANTLR Symbols
See also Grammars and Special symbols in actions.
| Symbol |
Description |
| $ |
Attribute |
| @ |
Action |
| :: |
action or dynamically-scoped attribute scope specifier |
| : |
rule definition |
| ; |
end rule |
| | |
alternative |
| 's' |
char or string literal |
| . |
wildcard |
| = |
label assignment |
| += |
list label assignment |
| [..] |
argument or return value spec |
| {...} |
action |
| ... |
forced action; execute even while backtracking |
| (...) |
subrule |
| + |
1 or more |
| * |
0 or more |
| ? |
optional or semantic predicate |
| ~ |
match not |
| ! |
don't include in AST |
| ^ |
make AST root node |
| => |
always execute predicate |
| -> |
rewrite rule |
| <token options> |
token option spec like ID<node=VarNode> |
| ^(...) |
tree grammar or rewrite element |
| // ... |
single-line comment |
| /* ... */ |
multi-line comment |
| Keyword |
Description |
| scope |
Dynamically-scoped attribute |
| fragment |
lexer rule is a helper rule, not real token for parser |
| lexer |
grammar type |
| tree |
grammar type |
| parser |
grammar type |
| grammar |
grammar header |
| returns |
rule return value(s) |
| throws |
rule throws exception(s) |
| catch |
catch rule exceptions |
| finally |
do this no matter what |
| options |
grammar or rule options |
| tokens |
can add tokens with this; usually imaginary tokens |
| import |
import grammar(s) |