public class LL1Analyzer
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
ATN |
atn |
static int |
HIT_PRED
Special value added to the lookahead sets to indicate that we hit
a predicate during analysis if
seeThruPreds==false . |
Constructor and Description |
---|
LL1Analyzer(ATN atn) |
Modifier and Type | Method and Description |
---|---|
protected void |
_LOOK(ATNState s,
ATNState stopState,
PredictionContext ctx,
IntervalSet look,
java.util.Set<ATNConfig> lookBusy,
java.util.BitSet calledRuleStack,
boolean seeThruPreds,
boolean addEOF)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
IntervalSet[] |
getDecisionLookahead(ATNState s)
Calculates the SLL(1) expected lookahead set for each outgoing transition
of an
ATNState . |
IntervalSet |
LOOK(ATNState s,
ATNState stopState,
RuleContext ctx)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
IntervalSet |
LOOK(ATNState s,
RuleContext ctx)
Compute set of tokens that can follow
s in the ATN in the
specified ctx . |
public static final int HIT_PRED
seeThruPreds==false
.public final ATN atn
public LL1Analyzer(ATN atn)
public IntervalSet[] getDecisionLookahead(ATNState s)
ATNState
. The returned array has one element for each
outgoing transition in s
. If the closure from transition
i leads to a semantic predicate before matching a symbol, the
element at index i of the result will be null
.s
- the ATN states
.public IntervalSet LOOK(ATNState s, RuleContext ctx)
s
in the ATN in the
specified ctx
.
If ctx
is null
and the end of the rule containing
s
is reached, Token.EPSILON
is added to the result set.
If ctx
is not null
and the end of the outermost rule is
reached, Token.EOF
is added to the result set.
s
- the ATN statectx
- the complete parser context, or null
if the context
should be ignoreds
in the ATN in the
specified ctx
.public IntervalSet LOOK(ATNState s, ATNState stopState, RuleContext ctx)
s
in the ATN in the
specified ctx
.
If ctx
is null
and the end of the rule containing
s
is reached, Token.EPSILON
is added to the result set.
If ctx
is not null
and the end of the outermost rule is
reached, Token.EOF
is added to the result set.
s
- the ATN statestopState
- the ATN state to stop at. This can be a
BlockEndState
to detect epsilon paths through a closure.ctx
- the complete parser context, or null
if the context
should be ignoreds
in the ATN in the
specified ctx
.protected void _LOOK(ATNState s, ATNState stopState, PredictionContext ctx, IntervalSet look, java.util.Set<ATNConfig> lookBusy, java.util.BitSet calledRuleStack, boolean seeThruPreds, boolean addEOF)
s
in the ATN in the
specified ctx
.
If ctx
is null
and stopState
or the end of the
rule containing s
is reached, Token.EPSILON
is added to
the result set. If ctx
is not null
and addEOF
is
true
and stopState
or the end of the outermost rule is
reached, Token.EOF
is added to the result set.
s
- the ATN state.stopState
- the ATN state to stop at. This can be a
BlockEndState
to detect epsilon paths through a closure.ctx
- The outer context, or null
if the outer context should
not be used.look
- The result lookahead set.lookBusy
- A set used for preventing epsilon closures in the ATN
from causing a stack overflow. Outside code should pass
new HashSet<ATNConfig>
for this argument.calledRuleStack
- A set used for preventing left recursion in the
ATN from causing a stack overflow. Outside code should pass
new BitSet()
for this argument.seeThruPreds
- true
to true semantic predicates as
implicitly true
and "see through them", otherwise false
to treat semantic predicates as opaque and add HIT_PRED
to the
result if one is encountered.addEOF
- Add Token.EOF
to the result if the end of the
outermost context is reached. This parameter has no effect if ctx
is null
.