Package antlr
Class Grammar
- java.lang.Object
-
- antlr.Grammar
-
- Direct Known Subclasses:
LexerGrammar,ParserGrammar,TreeWalkerGrammar
public abstract class Grammar extends 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 booleananalyzerDebugprotected ToolantlrToolprotected booleanbuildASTprotected TokenclassMemberActionprotected StringclassNameprotected Stringcommentprotected booleandebuggingOutputprotected booleandefaultErrorHandlerprotected StringexportVocabThe name of the export vocabulary...used to generate the output token types interchange file.protected StringfileNameprotected CodeGeneratorgeneratorprotected booleanhasSyntacticPredicateprotected booleanhasUserErrorHandlingprotected StringimportVocabThe name of the import vocabulary.protected booleaninteractiveprotected intmaxkprotected Hashtableoptionsprotected TokenpreambleActionprotected Vectorrulesprotected StringsuperClassprotected Hashtablesymbolsprotected LLkGrammarAnalyzertheLLkAnalyzerprotected TokenManagertokenManagerThe token manager associated with the grammar, if any.protected booleantraceRules
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voiddefine(RuleSymbol rs)Define a ruleabstract voidgenerate()Top-level call to generate the code for this grammarprotected StringgetClassName()booleangetDefaultErrorHandler()StringgetFilename()intgetIntegerOption(String key)Get an integer option.TokengetOption(String key)Get an option.protected abstract StringgetSuperClass()GrammarSymbolgetSymbol(String s)EnumerationgetSymbols()booleanhasOption(String key)Check the existence of an option in the tablebooleanisDefined(String s)Is a rule symbol defined? (not used for tokens)abstract voidprocessArguments(String[] args)Process command line arguments.voidsetCodeGenerator(CodeGenerator gen)voidsetFilename(String s)voidsetGrammarAnalyzer(LLkGrammarAnalyzer a)booleansetOption(String key, Token value)Set a generic option.voidsetTokenManager(TokenManager tokenManager_)StringtoString()Print out the grammar without actions
-
-
-
Field Detail
-
antlrTool
protected Tool antlrTool
-
generator
protected CodeGenerator generator
-
theLLkAnalyzer
protected LLkGrammarAnalyzer theLLkAnalyzer
-
symbols
protected Hashtable symbols
-
buildAST
protected boolean buildAST
-
analyzerDebug
protected boolean analyzerDebug
-
interactive
protected boolean interactive
-
superClass
protected 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 String exportVocab
The name of the export vocabulary...used to generate the output token types interchange file.
-
importVocab
protected String importVocab
The name of the import vocabulary. "Initial conditions"
-
options
protected Hashtable options
-
rules
protected Vector rules
-
preambleAction
protected Token preambleAction
-
className
protected String className
-
fileName
protected 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 String comment
-
-
Method Detail
-
define
public void define(RuleSymbol rs)
Define a rule
-
generate
public abstract void generate() throws IOExceptionTop-level call to generate the code for this grammar- Throws:
IOException
-
getClassName
protected String getClassName()
-
getDefaultErrorHandler
public boolean getDefaultErrorHandler()
-
getFilename
public String getFilename()
-
getIntegerOption
public int getIntegerOption(String key) throws 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:
NumberFormatException
-
getOption
public Token getOption(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 String getSuperClass()
-
getSymbol
public GrammarSymbol getSymbol(String s)
-
getSymbols
public Enumeration getSymbols()
-
hasOption
public boolean hasOption(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(String s)
Is a rule symbol defined? (not used for tokens)
-
processArguments
public abstract void processArguments(String[] args)
Process command line arguments. Implemented in subclasses
-
setCodeGenerator
public void setCodeGenerator(CodeGenerator gen)
-
setFilename
public void setFilename(String s)
-
setGrammarAnalyzer
public void setGrammarAnalyzer(LLkGrammarAnalyzer a)
-
setOption
public boolean setOption(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_)
-
-