| Modifier and Type | Field and Description |
|---|---|
| public GrammarAST | associatedASTNode
Associate this NFAState with the corresponding GrammarAST node from which this node was created. |
| public static final int | |
| public static final int | |
| protected int | decisionNumber
What's its decision number from 1..n? |
| public int | decisionStateType
Subrules (...)* and (...)+ have more than one decision point in the NFA created for them. |
| protected String | description
During debugging and for nondeterminism warnings, it's useful to know what relationship this node has to the original grammar. |
| public Rule | enclosingRule
What rule do we live in? |
| public int | endOfBlockStateNumber
Jean Bovet needs in the GUI to know which state pairs correspond to the start/stop of a block. |
| protected boolean | EOTTargetState
Is this state the sole target of an EOT transition? |
| public Label | incidentEdgeLabel
For o-A->o type NFA tranitions, record the label that leads to this state. |
| public static final int | |
| public static final int | |
| public NFA | nfa
Which NFA are we in? |
| pack-priv int | numTransitions
How many transitions; 0, 1, or 2 transitions |
| public static final int | |
| public static final int | |
| public Transition[] |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public int | |
| public String | |
| public int | |
| public boolean | |
| public boolean | |
| public void | |
| public void | |
| public void | |
| public void | |
| public void | setTransition0(Transition e)
Used during optimization to reset a state to have the (single) transition another state has. |
| public String | |
| public Transition | |
| public int | translateDisplayAltToWalkAlt(int displayAlt)
The DFA decision for this NFA decision state always has an exit path for loops as n+1 for n alts in the loop. |
| associatedASTNode | back to summary |
|---|---|
| public GrammarAST associatedASTNode Associate this NFAState with the corresponding GrammarAST node from which this node was created. This is useful not only for associating the eventual lookahead DFA with the associated Grammar position, but also for providing users with nondeterminism warnings. Mainly used by decision states to report line:col info. Could also be used to track line:col for elements such as token refs. | |
| BLOCK_START | back to summary |
|---|---|
| public static final int BLOCK_START | |
| BYPASS | back to summary |
|---|---|
| public static final int BYPASS | |
| decisionNumber | back to summary |
|---|---|
| protected int decisionNumber What's its decision number from 1..n? | |
| decisionStateType | back to summary |
|---|---|
| public int decisionStateType Subrules (...)* and (...)+ have more than one decision point in the NFA created for them. They both have a loop-exit-or-stay-in decision node (the loop back node). They both have a normal alternative block decision node at the left edge. The (...)* is worse as it even has a bypass decision (2 alts: stay in or bypass) node at the extreme left edge. This is not how they get generated in code as a while-loop or whatever deals nicely with either. For error messages (where I need to print the nondeterministic alts) and for interpretation, I need to use the single DFA that is created (for efficiency) but interpret the results differently depending on which of the 2 or 3 decision states uses the DFA. For example, the DFA will always report alt n+1 as the exit branch for n real alts, so I need to translate that depending on the decision state. If decisionNumber>0 then this var tells you what kind of decision state it is. | |
| description | back to summary |
|---|---|
| protected String description During debugging and for nondeterminism warnings, it's useful to know what relationship this node has to the original grammar. For example, "start of alt 1 of rule a". | |
| enclosingRule | back to summary |
|---|---|
| public Rule enclosingRule What rule do we live in? | |
| endOfBlockStateNumber | back to summary |
|---|---|
| public int endOfBlockStateNumber Jean Bovet needs in the GUI to know which state pairs correspond to the start/stop of a block. | |
| EOTTargetState | back to summary |
|---|---|
| protected boolean EOTTargetState Is this state the sole target of an EOT transition? | |
| incidentEdgeLabel | back to summary |
|---|---|
| public Label incidentEdgeLabel For o-A->o type NFA tranitions, record the label that leads to this state. Useful for creating rich error messages when we find insufficiently (with preds) covered states. | |
| LOOPBACK | back to summary |
|---|---|
| public static final int LOOPBACK | |
| MAX_TRANSITIONS | back to summary |
|---|---|
| public static final int MAX_TRANSITIONS | |
| nfa | back to summary |
|---|---|
| public NFA nfa Which NFA are we in? | |
| numTransitions | back to summary |
|---|---|
| pack-priv int numTransitions How many transitions; 0, 1, or 2 transitions | |
| OPTIONAL_BLOCK_START | back to summary |
|---|---|
| public static final int OPTIONAL_BLOCK_START | |
| RIGHT_EDGE_OF_BLOCK | back to summary |
|---|---|
| public static final int RIGHT_EDGE_OF_BLOCK | |
| transition | back to summary |
|---|---|
| public Transition[] transition | |
| NFAState | back to summary |
|---|---|
| public NFAState(NFA nfa) | |
| addTransition | back to summary |
|---|---|
| public void addTransition(Transition e) Implements abstract org.
| |
| getDecisionNumber | back to summary |
|---|---|
| public int getDecisionNumber() | |
| getDescription | back to summary |
|---|---|
| public String getDescription() | |
| getNumberOfTransitions | back to summary |
|---|---|
| public int getNumberOfTransitions() Implements abstract org.
| |
| isDecisionState | back to summary |
|---|---|
| public boolean isDecisionState() | |
| isEOTTargetState | back to summary |
|---|---|
| public boolean isEOTTargetState() | |
| setDecisionASTNode | back to summary |
|---|---|
| public void setDecisionASTNode(GrammarAST decisionASTNode) What AST node is associated with this NFAState? When you set the AST node, I set the node to point back to this NFA state. | |
| setDecisionNumber | back to summary |
|---|---|
| public void setDecisionNumber(int decisionNumber) | |
| setDescription | back to summary |
|---|---|
| public void setDescription(String description) | |
| setEOTTargetState | back to summary |
|---|---|
| public void setEOTTargetState(boolean eot) | |
| setTransition0 | back to summary |
|---|---|
| public void setTransition0(Transition e) Used during optimization to reset a state to have the (single) transition another state has. | |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Doc from java. Returns a string representation of the object. | |
| transition | back to summary |
|---|---|
| public Transition transition(int i) Implements abstract org.
| |
| translateDisplayAltToWalkAlt | back to summary |
|---|---|
| public int translateDisplayAltToWalkAlt(int displayAlt) The DFA decision for this NFA decision state always has an exit path for loops as n+1 for n alts in the loop. That is really useful for displaying nondeterministic alts and so on, but for walking the NFA to get a sequence of edge labels or for actually parsing, we need to get the real alt number. The real alt number for exiting a loop is always 1 as transition 0 points at the exit branch (we compute DFAs always for loops at the loopback state). For walking/parsing the loopback state: 1 2 3 display alt (for human consumption) 2 3 1 walk alt For walking the block start: 1 2 3 display alt 1 2 3 For walking the bypass state of a (...)* loop: 1 2 3 display alt 1 1 2 all block alts map to entering loop exit means take bypass Non loop EBNF do not need to be translated; they are ignored by this method as decisionStateType==0. Return same alt if we can't translate. | |