|
Generic Interpreter 1.0 Private API |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object
|
+--gi.Lexicon
|
+--gi.Grammar
This class implements a Grammar.
| Nested Class Summary | |
protected static class |
Grammar.ParseTree
This class implements a constructed by interpreting a source stream. |
(package private) static class |
Grammar.Production
This class implements a . |
protected static class |
Grammar.Semantics
This class implements embedded in productions and evaluated when interpreting. |
| Nested classes inherited from class gi.Lexicon |
Lexicon.Alphabet, Lexicon.Concatenation, Lexicon.Exception, Lexicon.Expression, Lexicon.Match, Lexicon.NonMatch, Lexicon.PosixClass, Lexicon.Range, Lexicon.Repetition, Lexicon.Set, Lexicon.Singleton, Lexicon.UnicodeCategory, Lexicon.Union |
| Field Summary | |
private Lexicon.Set |
first
The first set computed by . |
private Map |
firsts
The mapping from a nonterminal to its first set in this Grammar. |
private Map |
follows
The mapping from a nonterminal to its follow set in this Grammar. |
(package private) Map |
productions
The Productions put into this Grammar. |
private static int |
size
The number of Productions constructed. |
(package private) Object |
start
The start symbol of this Grammar. |
private HashSet |
terminals
The terminals put into this Grammar. |
| Fields inherited from class gi.Lexicon |
END_OF_SOURCE |
| Constructor Summary | |
protected |
Grammar()
Constructs an empty Grammar. |
(package private) |
Grammar(Grammar grammar)
Constructs a Grammar that is a shallow copy of grammar. |
| Method Summary | |
(package private) Lexicon.Set |
first(Object nonterminal)
Returns the first set of a nonterminal. |
(package private) Lexicon.Set |
first(Object[] phrase,
int start)
Computes the first set of a phrase. |
(package private) Lexicon.Set |
follow(Object nonterminal)
Returns the follow set of a nonterminal. |
Object |
grab(BufferedReader source)
Grabs terminals from a source character stream using this Grammar. |
Grammar.ParseTree |
interpret()
Interprets the standard input stream using this Grammar. |
Grammar.ParseTree |
interpret(File source)
Interprets a source file using this Grammar. |
Grammar.ParseTree |
interpret(InputStream source)
Interprets a source byte stream using this Grammar. |
(package private) Grammar.ParseTree |
interpret(LineNumberReader source)
Interprets a source character stream using an LR(1) parser around this Grammar. |
Grammar.ParseTree |
interpret(PipedWriter source)
Interprets a source pipe using this Grammar. |
Grammar.ParseTree |
interpret(Reader source)
Interprets a source character stream using this Grammar. |
Grammar.ParseTree |
interpret(String source)
Interprets a source string using this Grammar. |
Grammar.ParseTree |
interpret(String[] argv)
Interprets by command-line arguments using this Grammar. |
(package private) boolean |
nonterminal(Object symbol)
Indicates whether a symbol is a nonterminal in this Grammar. |
protected void |
put(Object nonterminal,
Object[] phrase)
Puts a production into this Grammar. |
protected void |
put(Object nonterminal,
Object[][] phrases)
Puts productions into this Grammar. |
(package private) boolean |
terminal(Object symbol)
Indicates whether a symbol is a terminal in this Grammar. |
| Methods inherited from class gi.Lexicon |
expression, put, word |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
private final Lexicon.Set first
The first set computed by .first(phrase, start)
private final Map firsts
The mapping from a nonterminal to its first set in this Grammar. When empty, there is a need to compute current first sets. It is computed only on demand created by .first(nonterminal)
private final Map follows
The mapping from a nonterminal to its follow set in this Grammar. When empty, there is a need to compute current follow sets. It is computed only on demand created by .follow(nonterminal)
final Map productions
The Productions put into this Grammar. It is a mapping from a nonterminal to its Productions.
private static int size
The number of Productions constructed.
Object start
The start symbol of this Grammar. It is the nonterminal on the left-hand side of the Production first put into this Grammar.
private final HashSet terminals
The terminals put into this Grammar. When empty, there is a need to discover terminals. It is computed only on demand created by .grab(source)
| Constructor Detail |
protected Grammar()
Constructs an empty Grammar.
Grammar(Grammar grammar)
Constructs a Grammar that is a shallow copy of grammar. The fields of the new Grammar refer to the same objects as those in grammar.
grammar - the Grammar to be copied.| Method Detail |
Lexicon.Set first(Object nonterminal)
Returns the first set of a nonterminal.
nonterminal - the nonterminal whose first set is requested.
firsts.get(nonterminal), computing firsts if there is a need to compute current first sets.
Lexicon.Set first(Object[] phrase,
int start)
Computes the first set of a phrase.
phrase - the phrase whose first set is computed.start - the index at which to start computing the first set.
phrase.Lexicon.Set follow(Object nonterminal)
Returns the follow set of a nonterminal.
nonterminal - the nonterminal whose follow set is requested.
follows.get(nonterminal), computing follows if there is a need to compute current follow sets.
public Object grab(BufferedReader source)
throws Lexicon.Exception
Grabs terminals from a source character stream using this Grammar. Invokes until it returns a terminal occurring in a phrase of this Lexicon.grab(source)Grammar or end of source. Blocks until a character is available, an I/O error occurs, or the end of the source stream is reached.
grab in class Lexiconsource - the source character stream.
Grammar.
Lexicon.Exception - if an I/O or lexical error occurs.
public Grammar.ParseTree interpret()
throws Lexicon.Exception
Interprets the standard input stream using this Grammar.
ParseTree constructed by interpreting the standard input stream.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
public Grammar.ParseTree interpret(File source)
throws FileNotFoundException,
Lexicon.Exception
Interprets a source file using this Grammar.
source - the source file.
ParseTree constructed by interpreting source.
FileNotFoundException - if the source file cannot be found.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
public Grammar.ParseTree interpret(InputStream source)
throws Lexicon.Exception
Interprets a source byte stream using this Grammar.
source - the source byte stream.
ParseTree constructed by interpreting source.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
Grammar.ParseTree interpret(LineNumberReader source)
throws Lexicon.Exception
Interprets a source character stream using an LR(1) parser around this Grammar. This method is overridden by all parsers, so it is only invoked when this Grammar has not been extended by a parser.
source - the source character stream.
ParseTree constructed by interpreting source.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
public Grammar.ParseTree interpret(PipedWriter source)
throws IOException,
Lexicon.Exception
Interprets a source pipe using this Grammar.
source - the source pipe.
ParseTree constructed by interpreting source.
IOException - if the source pipe cannot be connected.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
public Grammar.ParseTree interpret(Reader source)
throws Lexicon.Exception
Interprets a source character stream using this Grammar.
source - the source character stream.
ParseTree constructed by interpreting source.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.
public Grammar.ParseTree interpret(String source)
throws Lexicon.Exception
Interprets a source string using this Grammar.
source - the source string.
ParseTree constructed by interpreting source.
Lexicon.Exception - if an I/O, lexical, syntax or semantic error occurs.public Grammar.ParseTree interpret(String[] argv)
Interprets by command-line arguments using this Grammar. When interpreting, the parser used will be (in order):
The first I/O, lexical, syntax or semantic error that occurs when interpreting is printed to the standard error stream. If requested, each
- The parser most recently constructed by preceding command-line arguments.
- The parser originally around this
Grammar.- An LR(1) parser.
ParseTree is printed to the standard error stream after interpreting.
argv - the command-line arguments controlling the interpreter.
The following arguments may appear zero or more times, are processed in order, and have the following effects:If no
-tree- Print each
ParseTreesubsequently constructed by interpreting a source stream.-ll1- Construct an
LL(1) parseraround thisGrammar.-lr0- Construct an
LR(0) parseraround thisGrammar.-slr1- Construct an
SLR(1) parseraround thisGrammar.-lr1- Construct an
LR(1) parseraround thisGrammar.-- Interpret the standard input stream using this
Grammar.filename- Interpret source file
filenameusing thisGrammar.filenamearguments are given, the standard input stream is interpreted.
ParseTree constructed by interpreting a source stream.boolean nonterminal(Object symbol)
Indicates whether a symbol is a nonterminal in this Grammar.
symbol - the symbol whose status is requested.
true if symbol is a nonterminal in this Grammar; false otherwise.
protected void put(Object nonterminal,
Object[] phrase)
Puts a production into this Grammar. The start symbol is the first nonterminal put in this Grammar.
nonterminal - the nonterminal to be added to this Grammar.phrase - the phrase produced by nonterminal. phrase may contain nonterminals, terminals, and Semantics.
protected void put(Object nonterminal,
Object[][] phrases)
Puts productions into this Grammar. The productions are successively added using .put(nonterminal, phrase)
nonterminal - the nonterminal on the left-hand side of the production.phrases - the phrases produced by nonterminal. Each phrase in phrases may contain nonterminals, terminals, and Semantics.boolean terminal(Object symbol)
Indicates whether a symbol is a terminal in this Grammar.
terminal in class Lexiconsymbol - the symbol whose status is requested.
true if symbol is a terminal in this Grammar; false otherwise.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||