public class Grammar extends GrammarBase
GrammarBase.PreSymbol| Modifier and Type | Field and Description |
|---|---|
static String |
NOT_PRODUCTIVE |
static String |
NOT_REACHABLE |
| Constructor and Description |
|---|
Grammar() |
Grammar(int start) |
Grammar(int start,
StringArrayList symbolTable) |
| Modifier and Type | Method and Description |
|---|---|
void |
addNullable(net.oneandone.sushi.util.IntBitSet result)
Returns a symbols that can derive the empty word.
|
void |
addProductions(Grammar right) |
void |
addReachable(int sym,
net.oneandone.sushi.util.IntBitSet result,
net.oneandone.sushi.util.IntBitSet recurse) |
void |
addTerminable(net.oneandone.sushi.util.IntBitSet result) |
void |
check(int startSym,
net.oneandone.sushi.util.IntBitSet usedSymbols,
List<String> symbolTable) |
void |
expandSymbol(int symbol)
expansion is not performed recurively
|
Map<Integer,PrefixSet> |
firsts(int k) |
static Grammar |
forProductions(String... prods) |
int |
getAlternative(int sym,
int no) |
int |
getAlternativeCount(int sym) |
int |
getLeft(int prod) |
int |
getLength(int prod) |
void |
getNonterminals(net.oneandone.sushi.util.IntBitSet result) |
int |
getRight(int prod,
int ofs) |
int |
getStart() |
int |
getSymbol(int prod,
int ofs) |
int |
getSymbolCount()
Every index less than getSymbolCount() is a valid symbol -- it's considered an unused
terminal if does not occur in any production.
|
void |
getSymbols(net.oneandone.sushi.util.IntBitSet result) |
StringArrayList |
getSymbolTable() |
void |
getTerminals(net.oneandone.sushi.util.IntBitSet result) |
void |
getUsedTerminals(net.oneandone.sushi.util.IntBitSet result) |
int |
getUser(int sym,
int no) |
int |
getUserCount(int sym) |
int |
getUserOfs(int sym,
int no,
int idx) |
int |
getUserOfsCount(int sym,
int no) |
boolean |
isNonterminal(int sym) |
boolean |
isTerminal(int sym) |
boolean |
isUsedTerminal(int sym) |
void |
packSymbols(int first,
int end)
pack helper symbols
|
String |
prodToString(int prod) |
void |
prodToString(StringBuilder buffer,
int prod) |
void |
removeDuplicateRules() |
void |
removeDuplicateSymbols(int first,
int last) |
void |
removeProductions(int symbol) |
boolean |
renameSymbol(int prev,
int next) |
String |
toString() |
addProduction, addProduction, getProduction, getProductionCount, getSymbol, getSymbols, removeProductionpublic static final String NOT_PRODUCTIVE
public static final String NOT_REACHABLE
public Grammar()
public Grammar(int start)
public Grammar(int start,
StringArrayList symbolTable)
public void check(int startSym,
net.oneandone.sushi.util.IntBitSet usedSymbols,
List<String> symbolTable)
throws GenericException
usedSymbols - are always considered reachableGenericExceptionpublic int getStart()
public StringArrayList getSymbolTable()
public int getLength(int prod)
public int getSymbol(int prod,
int ofs)
public int getLeft(int prod)
public int getRight(int prod,
int ofs)
public int getAlternativeCount(int sym)
public int getAlternative(int sym,
int no)
public int getUserCount(int sym)
public int getUser(int sym,
int no)
public int getUserOfsCount(int sym,
int no)
public int getUserOfs(int sym,
int no,
int idx)
public int getSymbolCount()
public void getTerminals(net.oneandone.sushi.util.IntBitSet result)
public void getUsedTerminals(net.oneandone.sushi.util.IntBitSet result)
public void getNonterminals(net.oneandone.sushi.util.IntBitSet result)
public void getSymbols(net.oneandone.sushi.util.IntBitSet result)
public boolean isTerminal(int sym)
public boolean isUsedTerminal(int sym)
public boolean isNonterminal(int sym)
public void addTerminable(net.oneandone.sushi.util.IntBitSet result)
result - normally the set of terminals.public void addReachable(int sym,
net.oneandone.sushi.util.IntBitSet result,
net.oneandone.sushi.util.IntBitSet recurse)
result - out-argument: symbols already reached - recursion must stop there.recurse - all symbols to recurse. null: allpublic void addProductions(Grammar right)
public void removeDuplicateRules()
public void removeDuplicateSymbols(int first,
int last)
public void packSymbols(int first,
int end)
end - = last + 1public boolean renameSymbol(int prev,
int next)
public void removeProductions(int symbol)
public void expandSymbol(int symbol)
public void addNullable(net.oneandone.sushi.util.IntBitSet result)
public String prodToString(int prod)
public void prodToString(StringBuilder buffer, int prod)
Copyright © 1998–2017 1&1. All rights reserved.