Package antlr
Class Grammar
- java.lang.Object
-
- antlr.Grammar
-
- Direct Known Subclasses:
LexerGrammar
,ParserGrammar
,TreeWalkerGrammar
public abstract class Grammar extends java.lang.Object
A Grammar holds a set of rules (which are stored in a symbol table). Most of the time a grammar needs a code generator and an LLkAnalyzer too.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
analyzerDebug
protected Tool
antlrTool
protected boolean
buildAST
protected Token
classMemberAction
protected java.lang.String
className
protected java.lang.String
comment
protected boolean
debuggingOutput
protected boolean
defaultErrorHandler
protected java.lang.String
exportVocab
The name of the export vocabulary...used to generate the output token types interchange file.protected java.lang.String
fileName
protected CodeGenerator
generator
protected boolean
hasSyntacticPredicate
protected boolean
hasUserErrorHandling
protected java.lang.String
importVocab
The name of the import vocabulary.protected boolean
interactive
protected int
maxk
protected java.util.Hashtable
options
protected Token
preambleAction
protected Vector
rules
protected java.lang.String
superClass
protected java.util.Hashtable
symbols
protected LLkGrammarAnalyzer
theLLkAnalyzer
protected TokenManager
tokenManager
The token manager associated with the grammar, if any.protected boolean
traceRules
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
define(RuleSymbol rs)
Define a ruleabstract void
generate()
Top-level call to generate the code for this grammarprotected java.lang.String
getClassName()
boolean
getDefaultErrorHandler()
java.lang.String
getFilename()
int
getIntegerOption(java.lang.String key)
Get an integer option.Token
getOption(java.lang.String key)
Get an option.protected abstract java.lang.String
getSuperClass()
GrammarSymbol
getSymbol(java.lang.String s)
java.util.Enumeration
getSymbols()
boolean
hasOption(java.lang.String key)
Check the existence of an option in the tableboolean
isDefined(java.lang.String s)
Is a rule symbol defined? (not used for tokens)abstract void
processArguments(java.lang.String[] args)
Process command line arguments.void
setCodeGenerator(CodeGenerator gen)
void
setFilename(java.lang.String s)
void
setGrammarAnalyzer(LLkGrammarAnalyzer a)
boolean
setOption(java.lang.String key, Token value)
Set a generic option.void
setTokenManager(TokenManager tokenManager_)
java.lang.String
toString()
Print out the grammar without actions
-
-
-
Field Detail
-
antlrTool
protected Tool antlrTool
-
generator
protected CodeGenerator generator
-
theLLkAnalyzer
protected LLkGrammarAnalyzer theLLkAnalyzer
-
symbols
protected java.util.Hashtable symbols
-
buildAST
protected boolean buildAST
-
analyzerDebug
protected boolean analyzerDebug
-
interactive
protected boolean interactive
-
superClass
protected java.lang.String superClass
-
tokenManager
protected TokenManager tokenManager
The token manager associated with the grammar, if any. // The token manager is responsible for maintaining the set of valid tokens, and // is conceptually shared between the lexer and parser. This may be either a // LexerGrammar or a ImportVocabTokenManager.
-
exportVocab
protected java.lang.String exportVocab
The name of the export vocabulary...used to generate the output token types interchange file.
-
importVocab
protected java.lang.String importVocab
The name of the import vocabulary. "Initial conditions"
-
options
protected java.util.Hashtable options
-
rules
protected Vector rules
-
preambleAction
protected Token preambleAction
-
className
protected java.lang.String className
-
fileName
protected java.lang.String fileName
-
classMemberAction
protected Token classMemberAction
-
hasSyntacticPredicate
protected boolean hasSyntacticPredicate
-
hasUserErrorHandling
protected boolean hasUserErrorHandling
-
maxk
protected int maxk
-
traceRules
protected boolean traceRules
-
debuggingOutput
protected boolean debuggingOutput
-
defaultErrorHandler
protected boolean defaultErrorHandler
-
comment
protected java.lang.String comment
-
-
Constructor Detail
-
Grammar
public Grammar(java.lang.String className_, Tool tool_, java.lang.String superClass)
-
-
Method Detail
-
define
public void define(RuleSymbol rs)
Define a rule
-
generate
public abstract void generate() throws java.io.IOException
Top-level call to generate the code for this grammar- Throws:
java.io.IOException
-
getClassName
protected java.lang.String getClassName()
-
getDefaultErrorHandler
public boolean getDefaultErrorHandler()
-
getFilename
public java.lang.String getFilename()
-
getIntegerOption
public int getIntegerOption(java.lang.String key) throws java.lang.NumberFormatException
Get an integer option. Given the name of the option find its associated integer value. If the associated value is not an integer or is not in the table, then throw an exception of type NumberFormatException.- Parameters:
key
- The name of the option- Returns:
- The value associated with the key.
- Throws:
java.lang.NumberFormatException
-
getOption
public Token getOption(java.lang.String key)
Get an option. Given the name of the option find its associated value.- Parameters:
key
- The name of the option- Returns:
- The value associated with the key, or null if the key has not been set.
-
getSuperClass
protected abstract java.lang.String getSuperClass()
-
getSymbol
public GrammarSymbol getSymbol(java.lang.String s)
-
getSymbols
public java.util.Enumeration getSymbols()
-
hasOption
public boolean hasOption(java.lang.String key)
Check the existence of an option in the table- Parameters:
key
- The name of the option- Returns:
- true if the option is in the table
-
isDefined
public boolean isDefined(java.lang.String s)
Is a rule symbol defined? (not used for tokens)
-
processArguments
public abstract void processArguments(java.lang.String[] args)
Process command line arguments. Implemented in subclasses
-
setCodeGenerator
public void setCodeGenerator(CodeGenerator gen)
-
setFilename
public void setFilename(java.lang.String s)
-
setGrammarAnalyzer
public void setGrammarAnalyzer(LLkGrammarAnalyzer a)
-
setOption
public boolean setOption(java.lang.String key, Token value)
Set a generic option. This associates a generic option key with a Token value. No validation is performed by this method, although users of the value (code generation and/or analysis) may require certain formats. The value is stored as a token so that the location of an error can be reported.- Parameters:
key
- The name of the option.value
- The value to associate with the key.- Returns:
- true if the option was a valid generic grammar option, false o/w
-
setTokenManager
public void setTokenManager(TokenManager tokenManager_)
-
toString
public java.lang.String toString()
Print out the grammar without actions- Overrides:
toString
in classjava.lang.Object
-
-