antlr
Class Grammar

java.lang.Object
  |
  +--antlr.Grammar

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
protected  boolean analyzerDebug
           
protected  Tool antlrTool
           
protected  boolean buildAST
           
protected  Token classMemberAction
           
protected  String className
           
protected  String comment
           
protected  boolean debuggingOutput
           
protected  boolean defaultErrorHandler
           
protected  String exportVocab
          The name of the export vocabulary...used to generate the output token types interchange file.
protected  String fileName
           
protected  CodeGenerator generator
           
protected  boolean hasSyntacticPredicate
           
protected  boolean hasUserErrorHandling
           
protected  String importVocab
          The name of the import vocabulary.
protected  boolean interactive
           
protected  int maxk
           
protected  Hashtable options
           
protected  Token preambleAction
           
protected  Vector rules
           
protected  String superClass
           
protected  Hashtable symbols
           
protected  LLkGrammarAnalyzer theLLkAnalyzer
           
protected  antlr.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.
protected  boolean traceRules
           
 
Constructor Summary
Grammar(String className_, Tool tool_, String superClass)
           
 
Method Summary
 void define(antlr.RuleSymbol rs)
          Define a rule
abstract  void generate()
          Top-level call to generate the code for this grammar
protected  String getClassName()
           
 boolean getDefaultErrorHandler()
           
 String getFilename()
           
 int getIntegerOption(String key)
          Get an integer option.
 Token getOption(String key)
          Get an option.
protected abstract  String getSuperClass()
           
 antlr.GrammarSymbol getSymbol(String s)
           
 Enumeration getSymbols()
           
 boolean hasOption(String key)
          Check the existence of an option in the table
 boolean isDefined(String s)
          Is a rule symbol defined?
abstract  void processArguments(String[] args)
          Process command line arguments.
 void setCodeGenerator(CodeGenerator gen)
           
 void setFilename(String s)
           
 void setGrammarAnalyzer(LLkGrammarAnalyzer a)
           
 boolean setOption(String key, Token value)
          Set a generic option.
 void setTokenManager(antlr.TokenManager tokenManager_)
           
 String toString()
          Print out the grammar without actions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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 antlr.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
Constructor Detail

Grammar

public Grammar(String className_,
               Tool tool_,
               String superClass)
Method Detail

define

public void define(antlr.RuleSymbol rs)
Define a rule


generate

public abstract void generate()
                       throws IOException
Top-level call to generate the code for this grammar

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.
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 antlr.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(antlr.TokenManager tokenManager_)

toString

public String toString()
Print out the grammar without actions

Overrides:
toString in class Object


Copyright 1999-2003 Oliver Zeigermann. All Rights Reserved.