|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectmarf.Storage.StorageManager
marf.nlp.Parsing.GrammarCompiler.GrammarCompiler
public class GrammarCompiler
Grammar compiler -- compiles source grammar file and produces a corresponding transition table for a given language denoted by the grammar.
$Id: GrammarCompiler.java,v 1.30 2007/12/18 21:37:57 mokhov Exp $
| Field Summary | |
|---|---|
protected Grammar |
oGrammar
Instance of the grammar as a set of production Rules, First and Follow sets. |
protected GrammarAnalyzer |
oGrammarAnalyzer
Lexical Analyzer for the grammar. |
protected GrammarElement |
oGrammarElement
Current grammar element. |
protected Rule |
oRule
Current grammar rule. |
protected Token |
oToken
Current lexical token. |
protected static TransitionTable |
soTransitionTable
Instance of the TransitionTable, generated upon the need from the source grammar file. |
protected java.lang.String |
strGrammarFileName
Source grammar filename. |
static java.lang.String |
TOKEN_ACTION_BREAK
Action for adding a next token to the RHS of the current rule signifying to stop. |
static java.lang.String |
TOKEN_ACTION_CONTINUE
Action for adding a next token to the RHS of the current rule signifying to continue and skip to the next token. |
static java.lang.String |
TOKEN_ACTION_PROCEED
Action for adding a next token to the RHS of the current rule signifying to proceed to add the current token to the RHS. |
| Fields inherited from class marf.Storage.StorageManager |
|---|
bDumpOnNotFound, iCurrentDumpMode, oObjectToSerialize, strFilename |
| Fields inherited from interface marf.Storage.IStorageManager |
|---|
DUMP_BINARY, DUMP_CSV_TEXT, DUMP_GZIP_BINARY, DUMP_HTML, DUMP_SQL, DUMP_XML, MARF_INTERFACE_CODE_REVISION, STORAGE_FILE_EXTENSIONS |
| Constructor Summary | |
|---|---|
GrammarCompiler()
Default Constructor. |
|
GrammarCompiler(java.lang.String pstrGrammarFileName)
Constructor with the grammar filename. |
|
| Method Summary | |
|---|---|
protected boolean |
addIDToken()
Adds a non-terminal grammar ID token type to the RHS of the current rule. |
protected void |
addNextRHSElement()
Adds next element to the RHS of the current rule. |
protected void |
addTerminalToken()
Adds a terminal token type to the RHS of the current rule. |
protected void |
checkUndefinedNonTerminals()
Checks for undefined non-terminals in the grammar. |
void |
compileGrammar()
Compiles grammar. |
protected void |
createEOFTerminal()
Creates and end-of-file indicator terminal. |
protected void |
createEpsilonToken()
Creates an instance of an empty (epsilon) token. |
protected void |
createGrammarAnalyzer()
Instantiates grammar analyzer. |
protected boolean |
createNextNonTerminal()
Creates the next non-terminal of a rule from the upcoming token. |
protected void |
createRule()
Creates an embryo of a rule given the LHS non-terminal and the rule operator `::='. |
protected void |
getBusted()
Dies on unexpected grammar token type. |
Grammar |
getGrammar()
Allows querying for inner instance of the grammar. |
protected GrammarElement |
getGrammarElement(java.lang.String pstrName)
Returns a grammar element object by it's name (lexeme) if it exists; null otherwise. |
java.lang.String |
getGrammarFileName()
Allows querying for the filename of the grammar. |
static java.lang.String |
getMARFSourceCodeRevision()
Retrieves class' revision. |
protected java.lang.String |
getNextRHSToken()
Acquires the next RHS token for a rule from the token stream. |
static TransitionTable |
getTransitionTable()
Allows querying for the inner transition table data structure. |
static TransitionTable |
loadTT(java.lang.String pstrTTFileName)
Loads (previously serialized) state of the TT. |
protected void |
outputStats()
Outputs statistics by serializing the grammar analyzer to a file as well as errors if any to the the error log file. |
protected void |
parseGrammar()
Parses grammar and outputs stats at the end. |
boolean |
serialize(int piOperation)
Text serialization routine for grammar compilation. |
| Methods inherited from class marf.Storage.StorageManager |
|---|
backSynchronizeObject, clone, dump, dumpBinary, dumpCSV, dumpGzipBinary, dumpHTML, dumpSQL, dumpXML, enableDumpOnNotFound, equals, getDefaultExtension, getDefaultExtension, getDumpMode, getFilename, getObjectToSerialize, hashCode, restore, restoreBinary, restoreCSV, restoreGzipBinary, restoreHTML, restoreSQL, restoreXML, setDumpMode, setFilename, toString |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String TOKEN_ACTION_BREAK
public static final java.lang.String TOKEN_ACTION_CONTINUE
public static final java.lang.String TOKEN_ACTION_PROCEED
protected Grammar oGrammar
protected java.lang.String strGrammarFileName
protected GrammarAnalyzer oGrammarAnalyzer
protected static TransitionTable soTransitionTable
protected GrammarElement oGrammarElement
protected Token oToken
protected Rule oRule
| Constructor Detail |
|---|
public GrammarCompiler()
throws CompilerError
grammar-original.txt as the filename.
CompilerError - if initialization failed
public GrammarCompiler(java.lang.String pstrGrammarFileName)
throws CompilerError
pstrGrammarFileName - the filename of the grammar to compile
CompilerError - if initialization failed| Method Detail |
|---|
protected void createGrammarAnalyzer()
public void compileGrammar()
throws CompilerError
CompilerError - in case there was a lexical or syntax errorprotected void createEpsilonToken()
protected boolean createNextNonTerminal()
throws CompilerError
true if the token was created; and false
if the end of file was reached
CompilerError - -- either a SyntaxError or LexicalErrorSyntaxError,
LexicalError
protected void createRule()
throws CompilerError
CompilerError - -- either a SyntaxError or LexicalErrorSyntaxError,
LexicalErrorprotected void outputStats()
GrammarAnalyzer.serialize(int),
GrammarAnalyzer.getLexicalGrammarErrors(),
GenericLexicalAnalyzer.getErrorsPresent(),
GenericLexicalAnalyzer.getErrorLogFilename()
protected java.lang.String getNextRHSToken()
throws CompilerError
CompilerError - -- either a SyntaxError or LexicalErrorSyntaxError,
LexicalError
protected void addNextRHSElement()
throws SyntaxError
SyntaxError - if unrecognized token type foundprotected boolean addIDToken()
true if the current token type is really
of type GrammarTokenType.GRAMMAR_IDGrammarTokenType.GRAMMAR_IDprotected void addTerminalToken()
protected void getBusted()
throws SyntaxError
SyntaxError - indicated unexpected token type.protected void createEOFTerminal()
protected void checkUndefinedNonTerminals()
throws SemanticError
SemanticError - if there were undefined non-terminals
protected void parseGrammar()
throws CompilerError
CompilerError - in case of lexical, syntax, or semantic errorsGrammar,
Ruleprotected GrammarElement getGrammarElement(java.lang.String pstrName)
pstrName - the name of the element
public static TransitionTable loadTT(java.lang.String pstrTTFileName)
throws StorageException
pstrTTFileName - filename of a file with previously stored transition table
StorageException - if there was any problem loading the table from filepublic boolean serialize(int piOperation)
piOperation - 0 for load and 1 for save
true if the I/O operation was successfulpublic final Grammar getGrammar()
public final java.lang.String getGrammarFileName()
public static final TransitionTable getTransitionTable()
public static java.lang.String getMARFSourceCodeRevision()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||