public class Parser
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
(package private) java.util.Map<ItemSet,java.lang.Short> |
_DFASet |
(package private) java.util.Vector<ItemSet> |
_DFAStates |
static int |
ERROR |
static int |
FINISH |
private DFATable |
m_dfa |
private Document |
m_doc |
private java.util.HashMap<java.lang.Integer,int[]> |
m_firstSet |
private java.util.HashMap<java.lang.Integer,TokenSet> |
m_firstSetVal |
private java.util.HashMap<java.lang.Integer,java.text.MessageFormat> |
m_formats |
private java.util.Vector<short[]> |
m_goto |
(package private) int |
m_maxTerminal |
private int |
m_nonTerminalCount |
private java.util.Map<java.lang.String,java.lang.Integer> |
m_nonTerminals |
private OptionMap |
m_options |
private java.io.PrintStream |
m_out |
private short |
m_productionIdCounter |
private java.util.Map<java.lang.Integer,Production[]> |
m_productionMap |
private java.util.Vector<Production> |
m_productions |
private int |
m_reduceConflict |
private int |
m_shiftConflict |
private int[] |
m_symbolGroups
look up the index of a terminal in m_usedSymbols
|
private java.util.Map<java.lang.Integer,java.lang.String> |
m_symbolMap |
private int |
m_terminalCount |
private java.util.Map<java.lang.Integer,Token> |
m_terminalMap |
private java.util.Map<java.lang.String,Token> |
m_terminals |
private java.util.LinkedList<Token> |
m_tokens |
private int |
m_usedSymbolCount |
private int[] |
m_usedSymbols
symbols actually being used.
|
private int |
m_usedTerminalCount |
private static java.lang.String |
PROP_PARSER |
private static java.lang.String |
PROP_PRODUCTION |
private static Token |
s_error |
private static Token |
s_finish |
private static java.util.regex.Pattern |
s_tokenNamePattern |
static java.lang.String |
START |
Modifier | Constructor and Description |
---|---|
private |
Parser(Document doc,
OptionMap options) |
Modifier and Type | Method and Description |
---|---|
(package private) void |
buildStates(Closure closureFunctor,
java.util.Comparator<Item> kernelSorter) |
private java.lang.String |
checkTerminalName(int lineNumber,
java.lang.String name,
int[] value) |
private java.lang.String |
checkTerminalName(int lineNumber,
java.lang.String name,
int[] value,
boolean noInternal) |
(package private) void |
computeFirst(int[] production,
int begin,
int end,
TokenSet first) |
private void |
computeFirstSet() |
private int |
computeUsedSymbols() |
(package private) Item |
createDummyItem(Production production)
Dummy items are for searching purpose.
|
(package private) Item |
createItem(Production production,
int pos,
TokenSet lookahead) |
(package private) TokenSet |
createTokenSet() |
int |
getCaseCount() |
boolean |
getDefaultReduce() |
short[] |
getDefaultReduces() |
DFATable |
getDFA() |
java.util.Map<java.lang.Integer,java.text.MessageFormat> |
getFormats() |
java.util.Vector<short[]> |
getGoto() |
int |
getMaxTerminal() |
private int |
getNonterminal(java.lang.String name) |
int |
getNonTerminalCount() |
static Parser |
getParser(Document doc,
OptionMap options) |
(package private) java.util.Map<java.lang.Integer,Production[]> |
getProductionMap() |
(package private) java.util.Vector<Production> |
getProductions() |
int |
getReduceConflict() |
java.util.Vector<Production> |
getRules() |
int |
getShiftConflict() |
private int |
getSymbol(int lineNumber,
java.lang.String name) |
int[] |
getSymbolGroups() |
java.lang.String[] |
getSymbols() |
int |
getTerminalCount() |
java.util.LinkedList<Token> |
getTokens()
For output purpose.
|
(package private) int |
getUsedSymbolCount() |
int[] |
getUsedSymbols() |
int |
getUsedTerminalCount() |
int[] |
getUsedTerminals() |
(package private) Production |
hasDefaultReduce(ItemSet itemSet) |
(package private) Production |
hasReduce(ItemSet itemSet,
int symbol) |
(package private) ItemSet |
move(java.util.Comparator<Item> kernelSorter,
ItemSet src,
int symbol) |
void |
parse() |
private void |
parseProductions() |
private int |
parseTerm(int lineNumber,
java.lang.String terms,
int[] pos) |
private int |
parseTerminals() |
(package private) void |
propagateClosure(ItemSet itemSet) |
private void |
reduce() |
(package private) java.lang.String |
toString(Item item) |
(package private) java.lang.String |
toString(ItemSet itemSet) |
(package private) java.lang.String |
toString(Production production) |
(package private) java.lang.String |
toString(Token token) |
(package private) java.lang.String |
toString(TokenSet tokenSet) |
private void |
verbose(java.lang.String msg) |
private void |
verboseSection(java.lang.String section) |
private static final java.lang.String PROP_PARSER
private static final java.lang.String PROP_PRODUCTION
private static java.util.regex.Pattern s_tokenNamePattern
public static java.lang.String START
public static int FINISH
public static int ERROR
private static Token s_finish
private static Token s_error
int m_maxTerminal
private short m_productionIdCounter
private final Document m_doc
private final OptionMap m_options
private int m_terminalCount
private int m_nonTerminalCount
private int m_usedTerminalCount
private int m_usedSymbolCount
private int[] m_usedSymbols
private int[] m_symbolGroups
private final java.util.Map<java.lang.String,Token> m_terminals
private final java.util.Map<java.lang.Integer,Token> m_terminalMap
private final java.util.Map<java.lang.String,java.lang.Integer> m_nonTerminals
private final java.util.Vector<Production> m_productions
private final java.util.Map<java.lang.Integer,java.lang.String> m_symbolMap
private final java.util.Map<java.lang.Integer,Production[]> m_productionMap
private final java.util.HashMap<java.lang.Integer,int[]> m_firstSet
private final java.util.HashMap<java.lang.Integer,TokenSet> m_firstSetVal
private final DFATable m_dfa
private final java.util.Vector<short[]> m_goto
private final java.util.LinkedList<Token> m_tokens
private final java.util.HashMap<java.lang.Integer,java.text.MessageFormat> m_formats
final java.util.Vector<ItemSet> _DFAStates
final java.util.Map<ItemSet,java.lang.Short> _DFASet
private int m_reduceConflict
private int m_shiftConflict
private java.io.PrintStream m_out
public static Parser getParser(Document doc, OptionMap options) throws java.io.IOException
java.io.IOException
private void verbose(java.lang.String msg)
private void verboseSection(java.lang.String section)
public void parse() throws java.io.IOException
java.io.IOException
private int parseTerminals()
private void parseProductions()
private int parseTerm(int lineNumber, java.lang.String terms, int[] pos)
private java.lang.String checkTerminalName(int lineNumber, java.lang.String name, int[] value)
private java.lang.String checkTerminalName(int lineNumber, java.lang.String name, int[] value, boolean noInternal)
private int getNonterminal(java.lang.String name)
private int getSymbol(int lineNumber, java.lang.String name)
void computeFirst(int[] production, int begin, int end, TokenSet first)
private void computeFirstSet()
private int computeUsedSymbols()
Item createItem(Production production, int pos, TokenSet lookahead)
Item createDummyItem(Production production)
production
- the production to be used, can be null.TokenSet createTokenSet()
public java.util.LinkedList<Token> getTokens()
void propagateClosure(ItemSet itemSet)
Production hasDefaultReduce(ItemSet itemSet)
Production hasReduce(ItemSet itemSet, int symbol)
public boolean getDefaultReduce()
private void reduce()
java.util.Vector<Production> getProductions()
java.util.Map<java.lang.Integer,Production[]> getProductionMap()
public DFATable getDFA()
public java.util.Vector<short[]> getGoto()
public int[] getUsedSymbols()
public int[] getSymbolGroups()
public int[] getUsedTerminals()
public int getTerminalCount()
public int getNonTerminalCount()
public int getUsedTerminalCount()
int getUsedSymbolCount()
java.lang.String toString(Production production)
java.lang.String toString(TokenSet tokenSet)
java.lang.String toString(Item item)
java.lang.String toString(ItemSet itemSet)
java.lang.String toString(Token token)
public java.util.Vector<Production> getRules()
public short[] getDefaultReduces()
public int getCaseCount()
public int getMaxTerminal()
public java.lang.String[] getSymbols()
public java.util.Map<java.lang.Integer,java.text.MessageFormat> getFormats()
public int getShiftConflict()
public int getReduceConflict()