public class Grammar
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
java.lang.String |
className |
Symbol |
goalSym |
java.lang.String |
packageName |
java.util.List<Rule> |
rules |
java.util.Map<java.lang.Integer,Symbol> |
symIndex |
java.util.Set<Symbol> |
syms |
static boolean |
VERBOSE |
| Constructor and Description |
|---|
Grammar(java.util.List<Rule> originalRules,
java.util.List<Rule> rules,
Symbol goalSym,
Rule goalRule,
java.util.Set<Symbol> syms,
java.util.BitSet nullable,
java.util.Map<Symbol,java.util.Set<Symbol>> first,
java.util.Map<Symbol,java.util.Set<Symbol>> follow,
java.util.Map<Symbol,java.util.Set<Item>> extension,
ExtensionBuilderLr1 extensionBuilder,
java.lang.String embed,
java.lang.String header,
java.lang.String className,
java.lang.String packageName,
java.util.Set<java.lang.String> left,
java.util.Set<java.lang.String> right,
java.util.Set<java.lang.String> nonassoc,
java.util.Map<java.lang.String,java.lang.Integer> precedence) |
| Modifier and Type | Method and Description |
|---|---|
MyParser |
buildParser(ProblemHandler problems,
TraceHandler trace) |
static java.util.Collection<Rule> |
canonicalRules(java.util.Collection<Rule> rules)
Transform grammar rules to canonical form.
|
void |
checkProblems(ProblemHandler problems,
java.util.Set<Symbol> roots) |
java.util.Collection<Item> |
extension(Symbol sym) |
java.util.Collection<? extends Item> |
extension(Symbol a,
Symbol b) |
SymSet |
first(Symbol sym) |
java.util.Collection<Symbol> |
follow(Symbol lhs) |
boolean |
left(java.lang.String token) |
boolean |
nonassoc(java.lang.String token) |
boolean |
nullable(Symbol sym) |
int |
precedence(java.lang.String token) |
java.lang.String |
precedenceTerminal(Action action)
Returns the name of the terminal used to determine precedence for this action.
|
void |
printBeaverParser(java.io.PrintStream out,
MyParser parser) |
void |
printBeaverSpec(java.io.PrintStream out,
MyParser parser) |
void |
printBeaverTestSpec(java.io.PrintStream out,
MyParser parser) |
void |
printParser(java.io.PrintStream out,
MyParser parser,
boolean debug)
Generate a non-Beaver parser.
|
void |
printTables(MyParser parser) |
boolean |
right(java.lang.String token) |
Symbol |
sym(int index) |
static java.lang.String |
typeOf(Symbol symbol,
java.util.Collection<Rule> rules) |
public static final boolean VERBOSE
public final java.util.List<Rule> rules
public final Symbol goalSym
public final java.util.Set<Symbol> syms
public final java.util.Map<java.lang.Integer,Symbol> symIndex
public final java.lang.String className
public final java.lang.String packageName
public Grammar(java.util.List<Rule> originalRules, java.util.List<Rule> rules, Symbol goalSym, Rule goalRule, java.util.Set<Symbol> syms, java.util.BitSet nullable, java.util.Map<Symbol,java.util.Set<Symbol>> first, java.util.Map<Symbol,java.util.Set<Symbol>> follow, java.util.Map<Symbol,java.util.Set<Item>> extension, ExtensionBuilderLr1 extensionBuilder, java.lang.String embed, java.lang.String header, java.lang.String className, java.lang.String packageName, java.util.Set<java.lang.String> left, java.util.Set<java.lang.String> right, java.util.Set<java.lang.String> nonassoc, java.util.Map<java.lang.String,java.lang.Integer> precedence)
public static java.util.Collection<Rule> canonicalRules(java.util.Collection<Rule> rules)
public MyParser buildParser(ProblemHandler problems, TraceHandler trace)
public int precedence(java.lang.String token)
public boolean left(java.lang.String token)
true if the token is left-associativepublic boolean right(java.lang.String token)
true if the token is right-associativepublic boolean nonassoc(java.lang.String token)
true if the token is non-associativepublic boolean nullable(Symbol sym)
public void printTables(MyParser parser)
public void printBeaverSpec(java.io.PrintStream out,
MyParser parser)
throws java.io.IOException
java.io.IOExceptionpublic void printBeaverTestSpec(java.io.PrintStream out,
MyParser parser)
throws java.io.IOException
java.io.IOExceptionpublic void printParser(java.io.PrintStream out,
MyParser parser,
boolean debug)
public void printBeaverParser(java.io.PrintStream out,
MyParser parser)
throws java.io.IOException
java.io.IOExceptionpublic void checkProblems(ProblemHandler problems, java.util.Set<Symbol> roots)
public Symbol sym(int index)
public java.lang.String precedenceTerminal(Action action)
The rightmost terminal is used to determine rule precedence (according to Beaver specification).