Package org.extendj.neobeaver
Class Grammar
- java.lang.Object
-
- org.extendj.neobeaver.Grammar
-
public class Grammar extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor 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)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description MyParserbuildParser(ProblemHandler problems, TraceHandler trace)static java.util.Collection<Rule>canonicalRules(java.util.Collection<Rule> rules)Transform grammar rules to canonical form.voidcheckProblems(ProblemHandler problems, java.util.Set<Symbol> roots)java.util.Collection<Item>extension(Symbol sym)java.util.Collection<? extends Item>extension(Symbol a, Symbol b)SymSetfirst(Symbol sym)java.util.Collection<Symbol>follow(Symbol lhs)booleanleft(java.lang.String token)booleannonassoc(java.lang.String token)booleannullable(Symbol sym)intprecedence(java.lang.String token)java.lang.StringprecedenceTerminal(Action action)Returns the name of the terminal used to determine precedence for this action.voidprintBeaverParser(java.io.PrintStream out, MyParser parser)voidprintBeaverSpec(java.io.PrintStream out, MyParser parser)voidprintBeaverTestSpec(java.io.PrintStream out, MyParser parser)voidprintParser(java.io.PrintStream out, MyParser parser, boolean debug)Generate a non-Beaver parser.voidprintTables(MyParser parser)booleanright(java.lang.String token)Symbolsym(int index)static java.lang.StringtypeOf(Symbol symbol, java.util.Collection<Rule> rules)
-
-
-
Field Detail
-
VERBOSE
public static final boolean VERBOSE
- See Also:
- Constant Field Values
-
rules
public final java.util.List<Rule> rules
-
goalSym
public final Symbol goalSym
-
syms
public final java.util.Set<Symbol> syms
-
symIndex
public final java.util.Map<java.lang.Integer,Symbol> symIndex
-
className
public final java.lang.String className
-
packageName
public final java.lang.String packageName
-
-
Constructor Detail
-
Grammar
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)
-
-
Method Detail
-
canonicalRules
public static java.util.Collection<Rule> canonicalRules(java.util.Collection<Rule> rules)
Transform grammar rules to canonical form.
-
buildParser
public MyParser buildParser(ProblemHandler problems, TraceHandler trace)
-
precedence
public int precedence(java.lang.String token)
- Returns:
- the precedence level for the given token. Lower values are higher precedence.
-
left
public boolean left(java.lang.String token)
- Returns:
trueif the token is left-associative
-
right
public boolean right(java.lang.String token)
- Returns:
trueif the token is right-associative
-
nonassoc
public boolean nonassoc(java.lang.String token)
- Returns:
trueif the token is non-associative
-
nullable
public boolean nullable(Symbol sym)
-
printTables
public void printTables(MyParser parser)
-
printBeaverSpec
public void printBeaverSpec(java.io.PrintStream out, MyParser parser) throws java.io.IOException- Throws:
java.io.IOException
-
printBeaverTestSpec
public void printBeaverTestSpec(java.io.PrintStream out, MyParser parser) throws java.io.IOException- Throws:
java.io.IOException
-
printParser
public void printParser(java.io.PrintStream out, MyParser parser, boolean debug)Generate a non-Beaver parser.
-
printBeaverParser
public void printBeaverParser(java.io.PrintStream out, MyParser parser) throws java.io.IOException- Throws:
java.io.IOException
-
checkProblems
public void checkProblems(ProblemHandler problems, java.util.Set<Symbol> roots)
-
sym
public Symbol sym(int index)
-
precedenceTerminal
public java.lang.String precedenceTerminal(Action action)
Returns the name of the terminal used to determine precedence for this action.The rightmost terminal is used to determine rule precedence (according to Beaver specification).
-
-