org.antlr.tool
Class ANTLRParser

java.lang.Object
  extended by antlr.LLkParser
      extended by org.antlr.tool.ANTLRParser
All Implemented Interfaces:
ANTLRTokenTypes

public class ANTLRParser
extends antlr.LLkParser
implements ANTLRTokenTypes

Read in an ANTLR grammar and build an AST. Try not to do any actions, just build the tree. The phases are: antlr.g (this file) assign.types.g define.g buildnfa.g antlr.print.g (optional) codegen.g Terence Parr University of San Francisco 2005


Field Summary
static java.lang.String[] _tokenNames
           
static BitSet _tokenSet_0
           
static BitSet _tokenSet_1
           
static BitSet _tokenSet_10
           
static BitSet _tokenSet_11
           
static BitSet _tokenSet_12
           
static BitSet _tokenSet_13
           
static BitSet _tokenSet_14
           
static BitSet _tokenSet_15
           
static BitSet _tokenSet_16
           
static BitSet _tokenSet_17
           
static BitSet _tokenSet_18
           
static BitSet _tokenSet_19
           
static BitSet _tokenSet_2
           
static BitSet _tokenSet_20
           
static BitSet _tokenSet_21
           
static BitSet _tokenSet_22
           
static BitSet _tokenSet_23
           
static BitSet _tokenSet_24
           
static BitSet _tokenSet_25
           
static BitSet _tokenSet_26
           
static BitSet _tokenSet_27
           
static BitSet _tokenSet_28
           
static BitSet _tokenSet_29
           
static BitSet _tokenSet_3
           
static BitSet _tokenSet_30
           
static BitSet _tokenSet_31
           
static BitSet _tokenSet_32
           
static BitSet _tokenSet_33
           
static BitSet _tokenSet_34
           
static BitSet _tokenSet_35
           
static BitSet _tokenSet_36
           
static BitSet _tokenSet_37
           
static BitSet _tokenSet_38
           
static BitSet _tokenSet_39
           
static BitSet _tokenSet_4
           
static BitSet _tokenSet_5
           
static BitSet _tokenSet_6
           
static BitSet _tokenSet_7
           
static BitSet _tokenSet_8
           
static BitSet _tokenSet_9
           
protected  GrammarAST currentBlockAST
           
protected  java.lang.String currentRuleName
           
protected  int gtype
           
protected  java.util.List lexerRuleNames
           
 
Fields inherited from interface org.antlr.tool.ANTLRTokenTypes
ACTION, ACTION_CHAR_LITERAL, ACTION_ESC, ACTION_STRING_LITERAL, ALT, AMPERSAND, ARG, ARG_ACTION, ARGLIST, ASSIGN, BACKTRACK_SEMPRED, BANG, BLOCK, CHAR_LITERAL, CHAR_RANGE, CLOSE_ELEMENT_OPTION, CLOSURE, COLON, COMBINED_GRAMMAR, COMMA, COMMENT, DIGIT, DOC_COMMENT, DOLLAR, DOUBLE_ANGLE_STRING_LITERAL, DOUBLE_QUOTE_STRING_LITERAL, EOA, EOB, EOF, EOR, EPSILON, ESC, FRAGMENT, GATED_SEMPRED, ID, IMPLIES, INITACTION, INT, INTERNAL_RULE_REF, LABEL, LEXER, LEXER_GRAMMAR, LITERAL_catch, LITERAL_finally, LITERAL_grammar, LITERAL_lexer, LITERAL_private, LITERAL_protected, LITERAL_public, LITERAL_returns, LITERAL_throws, LITERAL_tree, LPAREN, ML_COMMENT, NESTED_ACTION, NESTED_ARG_ACTION, NOT, NULL_TREE_LOOKAHEAD, OPEN_ELEMENT_OPTION, OPTIONAL, OPTIONS, OR, PARSER, PARSER_GRAMMAR, PLUS, PLUS_ASSIGN, POSITIVE_CLOSURE, QUESTION, RANGE, RCURLY, RET, REWRITE, ROOT, RPAREN, RULE, RULE_REF, SCOPE, SEMI, SEMPRED, SL_COMMENT, SRC, STAR, STRING_LITERAL, SYN_SEMPRED, SYNPRED, TEMPLATE, TOKEN_REF, TOKENS, TREE_BEGIN, TREE_GRAMMAR, WILDCARD, WS, WS_LOOP, WS_OPT, XDIGIT
 
Constructor Summary
  ANTLRParser(ParserSharedInputState state)
           
  ANTLRParser(TokenBuffer tokenBuf)
           
protected ANTLRParser(TokenBuffer tokenBuf, int k)
           
  ANTLRParser(TokenStream lexer)
           
protected ANTLRParser(TokenStream lexer, int k)
           
 
Method Summary
 void action()
          Match stuff like @parser::members {int i;}
 void actions()
           
 void actionScopeName()
          Sometimes the scope names will collide with keywords; allow them as ids for action scopes.
 void alternative()
           
 void altList(java.util.Map opts)
           
 void atom()
           
 void attrScope()
           
 void attrScopes()
           
 void block()
          Build #(BLOCK ( #(ALT ...) EOB )+ )
protected  void buildTokenTypeASTClassMap()
           
 void cleanup(GrammarAST root)
           
protected  GrammarAST createBlockFromDupAlt(GrammarAST alt)
          Create a copy of the alt and make it into a BLOCK; all actions, labels, tree operators, rewrites are removed.
 GrammarAST createSimpleRuleAST(java.lang.String name, GrammarAST block, boolean fragment)
           
protected  GrammarAST createSynSemPredFromBlock(GrammarAST synpredBlockAST, int synpredTokenType)
           
 void ebnf()
          matches ENBF blocks (and sets via block rule)
 GrammarAST ebnfSuffix(GrammarAST elemAST, boolean inRewrite)
           
 void element()
           
 void elementNoOptionSpec()
           
 void exceptionGroup()
           
 void exceptionHandler()
           
 void finallyClause()
           
 java.util.List getLexerRuleNames()
           
 void grammar(Grammar g)
           
 void grammarType()
           
 void id()
           
 void idList()
           
 void idToken()
          Match anything that looks like an ID and return tree as token type ID
 void notSet()
           
 void notTerminal()
           
 void option(java.util.Map opts)
           
 java.util.Map optionsSpec()
           
 java.lang.Object optionValue()
           
protected  void prefixWithSynPred(GrammarAST alt)
          Rewrite alt to have a synpred as first element; (xxx)=>xxx but only if they didn't specify one manually.
 void range()
           
 void reportError(RecognitionException ex)
           
 void rewrite_alternative()
           
 void rewrite_atom()
           
 void rewrite_block()
           
 void rewrite_ebnf()
           
 void rewrite_element()
           
 void rewrite_indirect_template_head()
          -> ({expr})(a={...}, ...)
 void rewrite_template_arg()
           
 void rewrite_template_args()
           
 void rewrite_template_head()
          -> foo(a={...}, ...)
 void rewrite_template()
          Build a tree for a template rewrite: ^(TEMPLATE (ID|ACTION) ^(ARGLIST ^(ARG ID ACTION) ...) ) where ARGLIST is always there even if no args exist.
 void rewrite_tree()
           
 void rewrite()
           
 void rule()
           
 void ruleAction()
          Match stuff like @init {int i;}
 void ruleActions()
           
 void rules()
           
 void ruleScopeSpec()
           
protected  GrammarAST setToBlockWithSet(GrammarAST b)
           
 void terminal()
           
 void throwsSpec()
           
 void tokenSpec()
           
 void tokensSpec()
           
 void tree()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

gtype

protected int gtype

currentRuleName

protected java.lang.String currentRuleName

currentBlockAST

protected GrammarAST currentBlockAST

lexerRuleNames

protected java.util.List lexerRuleNames

_tokenNames

public static final java.lang.String[] _tokenNames

_tokenSet_0

public static final BitSet _tokenSet_0

_tokenSet_1

public static final BitSet _tokenSet_1

_tokenSet_2

public static final BitSet _tokenSet_2

_tokenSet_3

public static final BitSet _tokenSet_3

_tokenSet_4

public static final BitSet _tokenSet_4

_tokenSet_5

public static final BitSet _tokenSet_5

_tokenSet_6

public static final BitSet _tokenSet_6

_tokenSet_7

public static final BitSet _tokenSet_7

_tokenSet_8

public static final BitSet _tokenSet_8

_tokenSet_9

public static final BitSet _tokenSet_9

_tokenSet_10

public static final BitSet _tokenSet_10

_tokenSet_11

public static final BitSet _tokenSet_11

_tokenSet_12

public static final BitSet _tokenSet_12

_tokenSet_13

public static final BitSet _tokenSet_13

_tokenSet_14

public static final BitSet _tokenSet_14

_tokenSet_15

public static final BitSet _tokenSet_15

_tokenSet_16

public static final BitSet _tokenSet_16

_tokenSet_17

public static final BitSet _tokenSet_17

_tokenSet_18

public static final BitSet _tokenSet_18

_tokenSet_19

public static final BitSet _tokenSet_19

_tokenSet_20

public static final BitSet _tokenSet_20

_tokenSet_21

public static final BitSet _tokenSet_21

_tokenSet_22

public static final BitSet _tokenSet_22

_tokenSet_23

public static final BitSet _tokenSet_23

_tokenSet_24

public static final BitSet _tokenSet_24

_tokenSet_25

public static final BitSet _tokenSet_25

_tokenSet_26

public static final BitSet _tokenSet_26

_tokenSet_27

public static final BitSet _tokenSet_27

_tokenSet_28

public static final BitSet _tokenSet_28

_tokenSet_29

public static final BitSet _tokenSet_29

_tokenSet_30

public static final BitSet _tokenSet_30

_tokenSet_31

public static final BitSet _tokenSet_31

_tokenSet_32

public static final BitSet _tokenSet_32

_tokenSet_33

public static final BitSet _tokenSet_33

_tokenSet_34

public static final BitSet _tokenSet_34

_tokenSet_35

public static final BitSet _tokenSet_35

_tokenSet_36

public static final BitSet _tokenSet_36

_tokenSet_37

public static final BitSet _tokenSet_37

_tokenSet_38

public static final BitSet _tokenSet_38

_tokenSet_39

public static final BitSet _tokenSet_39
Constructor Detail

ANTLRParser

protected ANTLRParser(TokenBuffer tokenBuf,
                      int k)

ANTLRParser

public ANTLRParser(TokenBuffer tokenBuf)

ANTLRParser

protected ANTLRParser(TokenStream lexer,
                      int k)

ANTLRParser

public ANTLRParser(TokenStream lexer)

ANTLRParser

public ANTLRParser(ParserSharedInputState state)
Method Detail

getLexerRuleNames

public java.util.List getLexerRuleNames()

setToBlockWithSet

protected GrammarAST setToBlockWithSet(GrammarAST b)

createBlockFromDupAlt

protected GrammarAST createBlockFromDupAlt(GrammarAST alt)
Create a copy of the alt and make it into a BLOCK; all actions, labels, tree operators, rewrites are removed.


prefixWithSynPred

protected void prefixWithSynPred(GrammarAST alt)
Rewrite alt to have a synpred as first element; (xxx)=>xxx but only if they didn't specify one manually.


createSynSemPredFromBlock

protected GrammarAST createSynSemPredFromBlock(GrammarAST synpredBlockAST,
                                               int synpredTokenType)

createSimpleRuleAST

public GrammarAST createSimpleRuleAST(java.lang.String name,
                                      GrammarAST block,
                                      boolean fragment)

reportError

public void reportError(RecognitionException ex)

cleanup

public void cleanup(GrammarAST root)

grammar

public final void grammar(Grammar g)
                   throws RecognitionException,
                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

grammarType

public final void grammarType()
                       throws RecognitionException,
                              TokenStreamException
Throws:
RecognitionException
TokenStreamException

id

public final void id()
              throws RecognitionException,
                     TokenStreamException
Throws:
RecognitionException
TokenStreamException

optionsSpec

public final java.util.Map optionsSpec()
                                throws RecognitionException,
                                       TokenStreamException
Throws:
RecognitionException
TokenStreamException

tokensSpec

public final void tokensSpec()
                      throws RecognitionException,
                             TokenStreamException
Throws:
RecognitionException
TokenStreamException

attrScopes

public final void attrScopes()
                      throws RecognitionException,
                             TokenStreamException
Throws:
RecognitionException
TokenStreamException

actions

public final void actions()
                   throws RecognitionException,
                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

rules

public final void rules()
                 throws RecognitionException,
                        TokenStreamException
Throws:
RecognitionException
TokenStreamException

action

public final void action()
                  throws RecognitionException,
                         TokenStreamException
Match stuff like @parser::members {int i;}

Throws:
RecognitionException
TokenStreamException

actionScopeName

public final void actionScopeName()
                           throws RecognitionException,
                                  TokenStreamException
Sometimes the scope names will collide with keywords; allow them as ids for action scopes.

Throws:
RecognitionException
TokenStreamException

option

public final void option(java.util.Map opts)
                  throws RecognitionException,
                         TokenStreamException
Throws:
RecognitionException
TokenStreamException

optionValue

public final java.lang.Object optionValue()
                                   throws RecognitionException,
                                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

tokenSpec

public final void tokenSpec()
                     throws RecognitionException,
                            TokenStreamException
Throws:
RecognitionException
TokenStreamException

attrScope

public final void attrScope()
                     throws RecognitionException,
                            TokenStreamException
Throws:
RecognitionException
TokenStreamException

rule

public final void rule()
                throws RecognitionException,
                       TokenStreamException
Throws:
RecognitionException
TokenStreamException

throwsSpec

public final void throwsSpec()
                      throws RecognitionException,
                             TokenStreamException
Throws:
RecognitionException
TokenStreamException

ruleScopeSpec

public final void ruleScopeSpec()
                         throws RecognitionException,
                                TokenStreamException
Throws:
RecognitionException
TokenStreamException

ruleActions

public final void ruleActions()
                       throws RecognitionException,
                              TokenStreamException
Throws:
RecognitionException
TokenStreamException

altList

public final void altList(java.util.Map opts)
                   throws RecognitionException,
                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

exceptionGroup

public final void exceptionGroup()
                          throws RecognitionException,
                                 TokenStreamException
Throws:
RecognitionException
TokenStreamException

ruleAction

public final void ruleAction()
                      throws RecognitionException,
                             TokenStreamException
Match stuff like @init {int i;}

Throws:
RecognitionException
TokenStreamException

idList

public final void idList()
                  throws RecognitionException,
                         TokenStreamException
Throws:
RecognitionException
TokenStreamException

block

public final void block()
                 throws RecognitionException,
                        TokenStreamException
Build #(BLOCK ( #(ALT ...) EOB )+ )

Throws:
RecognitionException
TokenStreamException

alternative

public final void alternative()
                       throws RecognitionException,
                              TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite

public final void rewrite()
                   throws RecognitionException,
                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

element

public final void element()
                   throws RecognitionException,
                          TokenStreamException
Throws:
RecognitionException
TokenStreamException

exceptionHandler

public final void exceptionHandler()
                            throws RecognitionException,
                                   TokenStreamException
Throws:
RecognitionException
TokenStreamException

finallyClause

public final void finallyClause()
                         throws RecognitionException,
                                TokenStreamException
Throws:
RecognitionException
TokenStreamException

elementNoOptionSpec

public final void elementNoOptionSpec()
                               throws RecognitionException,
                                      TokenStreamException
Throws:
RecognitionException
TokenStreamException

atom

public final void atom()
                throws RecognitionException,
                       TokenStreamException
Throws:
RecognitionException
TokenStreamException

ebnfSuffix

public final GrammarAST ebnfSuffix(GrammarAST elemAST,
                                   boolean inRewrite)
                            throws RecognitionException,
                                   TokenStreamException
Throws:
RecognitionException
TokenStreamException

ebnf

public final void ebnf()
                throws RecognitionException,
                       TokenStreamException
matches ENBF blocks (and sets via block rule)

Throws:
RecognitionException
TokenStreamException

tree

public final void tree()
                throws RecognitionException,
                       TokenStreamException
Throws:
RecognitionException
TokenStreamException

range

public final void range()
                 throws RecognitionException,
                        TokenStreamException
Throws:
RecognitionException
TokenStreamException

terminal

public final void terminal()
                    throws RecognitionException,
                           TokenStreamException
Throws:
RecognitionException
TokenStreamException

notSet

public final void notSet()
                  throws RecognitionException,
                         TokenStreamException
Throws:
RecognitionException
TokenStreamException

notTerminal

public final void notTerminal()
                       throws RecognitionException,
                              TokenStreamException
Throws:
RecognitionException
TokenStreamException

idToken

public final void idToken()
                   throws RecognitionException,
                          TokenStreamException
Match anything that looks like an ID and return tree as token type ID

Throws:
RecognitionException
TokenStreamException

rewrite_alternative

public final void rewrite_alternative()
                               throws RecognitionException,
                                      TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_block

public final void rewrite_block()
                         throws RecognitionException,
                                TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_template

public final void rewrite_template()
                            throws RecognitionException,
                                   TokenStreamException
Build a tree for a template rewrite: ^(TEMPLATE (ID|ACTION) ^(ARGLIST ^(ARG ID ACTION) ...) ) where ARGLIST is always there even if no args exist. ID can be "template" keyword. If first child is ACTION then it's an indirect template ref -> foo(a={...}, b={...}) -> ({string-e})(a={...}, b={...}) // e evaluates to template name -> {%{$ID.text}} // create literal template from string (done in ActionTranslator) -> {st-expr} // st-expr evaluates to ST

Throws:
RecognitionException
TokenStreamException

rewrite_element

public final void rewrite_element()
                           throws RecognitionException,
                                  TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_atom

public final void rewrite_atom()
                        throws RecognitionException,
                               TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_ebnf

public final void rewrite_ebnf()
                        throws RecognitionException,
                               TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_tree

public final void rewrite_tree()
                        throws RecognitionException,
                               TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_template_head

public final void rewrite_template_head()
                                 throws RecognitionException,
                                        TokenStreamException
-> foo(a={...}, ...)

Throws:
RecognitionException
TokenStreamException

rewrite_indirect_template_head

public final void rewrite_indirect_template_head()
                                          throws RecognitionException,
                                                 TokenStreamException
-> ({expr})(a={...}, ...)

Throws:
RecognitionException
TokenStreamException

rewrite_template_args

public final void rewrite_template_args()
                                 throws RecognitionException,
                                        TokenStreamException
Throws:
RecognitionException
TokenStreamException

rewrite_template_arg

public final void rewrite_template_arg()
                                throws RecognitionException,
                                       TokenStreamException
Throws:
RecognitionException
TokenStreamException

buildTokenTypeASTClassMap

protected void buildTokenTypeASTClassMap()