|
Object-oriented Parser System v3.6 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
ObjectParserFactory
public class ParserFactory
factory to construct a Parser.
| Field Summary | |
|---|---|
protected boolean |
error
if set, parser() will return null. |
protected Map<String,Parser.Literal> |
literals
access to Parser.literals. |
protected ArrayList<BitSet> |
lookaheads
mutable version of Parser.lookaheads. |
protected int |
nextSymbol
next unique, positive number to represent a Terminal. |
protected Map<String,Integer> |
nonterminals
maps Nonterminal name to index in rules. |
protected Parser |
parser
parser to be delivered, context for all creations. |
protected ArrayList<Parser.Pattern> |
patterns
mutable version of Parser.patterns. |
protected ArrayList<Parser.Rule> |
rules
mutable version of Parser.rules. |
protected Map<String,Integer> |
tokens
maps Token name to index in patterns. |
| Constructor Summary | |
|---|---|
ParserFactory()
|
|
| Method Summary | |
|---|---|
Parser.Node |
and(int position,
Parser.Node... cases)
factory method. |
Parser.Node |
andList(int position,
Parser.Node delimiter,
Parser.Node... cases)
factory method. |
Parser.Delimit |
delimit(int position,
int min,
int max,
Parser.Node body,
Parser.Node delimiter)
factory method. |
Parser.Delimit |
delimitMany(int position,
Parser.Node body,
Parser.Node delimiter)
convenience method: delimit zero or more times. |
Parser.Delimit |
delimitSome(int position,
Parser.Node body,
Parser.Node delimiter)
convenience method: delimit zero or more times. |
protected void |
error(int position,
String message)
should be overwritten to redirect all messages. |
protected Parser |
init(Parser parser,
String prolog,
String epilog)
transfers into Parser.patterns, Parser.rules, and Parser.lookaheads. |
Parser.Literal |
literal(int position,
String value)
factory method: maintains nextSymbol, literals, lookaheads. |
Parser.Repeat |
many(int position,
Parser.Node... body)
convenience method: repeat zero or more times. |
Parser.Nonterminal |
nonterminal(int position,
String name)
factory method. |
Parser.Repeat |
optional(int position,
Parser.Node... body)
convenience method: repeat at most once. |
Parser.Node |
or(int position,
Parser.Node... cases)
factory method. |
Parser.Node |
orList(int position,
Parser.Node delimiter,
Parser.Node... cases)
factory method. |
Parser |
parser(String prolog,
String epilog)
factory method: initializes and returns parser or null if there was an error. |
Parser.Pattern |
pattern(int position,
String name,
Parser.Type type,
String pattern)
factory method: maintains nextSymbol, tokens, patterns, lookaheads. |
protected String |
position(int position)
returns string with nonzero position, if any. |
Parser.Repeat |
repeat(int position,
int min,
int max,
Parser.Node... body)
factory method. |
Parser.Rule |
rule(int position,
String name,
Parser.Type type,
Parser.Node body)
factory method: maintains nonterminals, rules, and Parser.start. |
Parser.Sequence |
sequence(int position,
Parser.Node... body)
factory method. |
Parser.Repeat |
some(int position,
Parser.Node... body)
convenience method: repeat at least once. |
Parser.Token |
token(int position,
String name)
factory method: searches tokens. |
Parser.Type |
type(String name,
boolean flatten,
String... interfaces)
factory method. |
Parser.Node |
xor(int position,
Parser.Node... cases)
factory method. |
| Methods inherited from class Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected boolean error
parser() will return null.
error(int,java.lang.String)protected int nextSymbol
Terminal.
literal(int, java.lang.String),
pattern(int, java.lang.String, oops3.Parser.Type, java.lang.String)protected final Parser parser
protected final Map<String,Parser.Literal> literals
Parser.literals.
literal(int, java.lang.String)protected final Map<String,Integer> tokens
Token name to index in patterns.
pattern(int, java.lang.String, oops3.Parser.Type, java.lang.String),
token(int, java.lang.String),
rule(int, java.lang.String, oops3.Parser.Type, oops3.Parser.Node)protected final ArrayList<Parser.Pattern> patterns
Parser.patterns.
pattern(int, java.lang.String, oops3.Parser.Type, java.lang.String)protected final Map<String,Integer> nonterminals
Nonterminal name to index in rules.
pattern(int, java.lang.String, oops3.Parser.Type, java.lang.String),
rule(int, java.lang.String, oops3.Parser.Type, oops3.Parser.Node)protected final ArrayList<Parser.Rule> rules
Parser.rules.
rule(int, java.lang.String, oops3.Parser.Type, oops3.Parser.Node),
nonterminal(int, java.lang.String)protected final ArrayList<BitSet> lookaheads
Parser.lookaheads.
This is filled with null as placeholders and singletons for Terminal.
literal(int, java.lang.String),
pattern(int, java.lang.String, oops3.Parser.Type, java.lang.String)| Constructor Detail |
|---|
public ParserFactory()
| Method Detail |
|---|
protected void error(int position,
String message)
error.
public Parser parser(String prolog,
String epilog)
parser or null if there was an error.
init(Parser,java.lang.String,java.lang.String)
protected Parser init(Parser parser,
String prolog,
String epilog)
Parser.patterns, Parser.rules, and Parser.lookaheads.
Complains about undefined nonterminals, i.e., rules with null body.
public Parser.Literal literal(int position,
String value)
nextSymbol, literals, lookaheads.
public Parser.Pattern pattern(int position,
String name,
Parser.Type type,
String pattern)
nextSymbol, tokens, patterns, lookaheads.
Complains about duplicate definitions in both, tokens and nonterminals.
public Parser.Token token(int position,
String name)
tokens.
Error if untyped pattern.
IllegalArgumentException - if missing definition.
public Parser.Rule rule(int position,
String name,
Parser.Type type,
Parser.Node body)
nonterminals, rules, and Parser.start.
Complains about duplicate definitions in both, tokens and nonterminals.
type - cannot be void but can be null -- eventually collected as ArrayList.body - can be null -- forward declaration, type is ignored.
public Parser.Type type(String name,
boolean flatten,
String... interfaces)
public Parser.Nonterminal nonterminal(int position,
String name)
public Parser.Repeat repeat(int position,
int min,
int max,
Parser.Node... body)
IllegalArgumentException - if max < min or max is zero or body is null or empty.
public Parser.Repeat many(int position,
Parser.Node... body)
repeat zero or more times.
public Parser.Repeat optional(int position,
Parser.Node... body)
repeat at most once.
public Parser.Repeat some(int position,
Parser.Node... body)
repeat at least once.
public Parser.Delimit delimit(int position,
int min,
int max,
Parser.Node body,
Parser.Node delimiter)
IllegalArgumentException - if max < min or max < 2
or body or delimiter are null.
public Parser.Delimit delimitMany(int position,
Parser.Node body,
Parser.Node delimiter)
delimit zero or more times.
public Parser.Delimit delimitSome(int position,
Parser.Node body,
Parser.Node delimiter)
delimit zero or more times.
public Parser.Node and(int position,
Parser.Node... cases)
IllegalArgumentException - if body is null or empty.
public Parser.Node or(int position,
Parser.Node... cases)
IllegalArgumentException - if body is null or empty.
public Parser.Node andList(int position,
Parser.Node delimiter,
Parser.Node... cases)
IllegalArgumentException - if body is null or has fewer then two cases,
or if delimiter is null.
public Parser.Node orList(int position,
Parser.Node delimiter,
Parser.Node... cases)
IllegalArgumentException - if body is null or has fewer then two cases,
or if delimiter is null.
public Parser.Node xor(int position,
Parser.Node... cases)
IllegalArgumentException - if body is null or empty.
public Parser.Sequence sequence(int position,
Parser.Node... body)
Sequence even if body is a singleton.
IllegalArgumentException - if body is null or empty.protected String position(int position)
|
(c) 2008 Axel T. Schreiner |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||