Package org.antlr.analysis
Class SemanticContext
java.lang.Object
org.antlr.analysis.SemanticContext
- Direct Known Subclasses:
SemanticContext.CommutativePredicate
,SemanticContext.NOT
,SemanticContext.Predicate
A binary tree structure used to record the semantic context in which
an NFA configuration is valid. It's either a single predicate or
a tree representing an operation tree such as: p1&&p2 or p1||p2.
For NFA o-p1->o-p2->o, create tree AND(p1,p2).
For NFA (1)-p1->(2)
| ^
| |
(3)-p2----
we will have to combine p1 and p2 into DFA state as we will be
adding NFA configurations for state 2 with two predicates p1,p2.
So, set context for combined NFA config for state 2: OR(p1,p2).
I have scoped the AND, NOT, OR, and Predicate subclasses of
SemanticContext within the scope of this outer class.
July 7, 2006: TJP altered OR to be set of operands. the Binary tree
made it really hard to reduce complicated || sequences to their minimum.
Got huge repeated || conditions.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static class
static class
static class
static class
static class
static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final SemanticContext
Create a default value for the semantic context shared among all NFAConfigurations that do not have an actual semantic context. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic SemanticContext
static SemanticContext[]
static SemanticContext[]
abstract org.stringtemplate.v4.ST
genExpr
(CodeGenerator generator, org.stringtemplate.v4.STGroup templates, DFA dfa) Generate an expression that will evaluate the semantic context, given a set of output templates.static Collection<SemanticContext>
getAndOperands
(SemanticContext context) abstract SemanticContext
Given a semantic context expression tree, return a tree with all nongated predicates set to true and then reduced.static Collection<SemanticContext>
getOrOperands
(SemanticContext context) abstract boolean
abstract boolean
static SemanticContext
static SemanticContext
or
(SemanticContext a, SemanticContext b) void
Notify the indicated grammar of any syn preds used within this context
-
Field Details
-
EMPTY_SEMANTIC_CONTEXT
Create a default value for the semantic context shared among all NFAConfigurations that do not have an actual semantic context. This prevents lots of if!=null type checks all over; it represents just an empty set of predicates.
-
-
Constructor Details
-
SemanticContext
public SemanticContext()
-
-
Method Details
-
getGatedPredicateContext
Given a semantic context expression tree, return a tree with all nongated predicates set to true and then reduced. So p&&(q||r) would return p&&r if q is nongated but p and r are gated. -
genExpr
public abstract org.stringtemplate.v4.ST genExpr(CodeGenerator generator, org.stringtemplate.v4.STGroup templates, DFA dfa) Generate an expression that will evaluate the semantic context, given a set of output templates. -
hasUserSemanticPredicate
public abstract boolean hasUserSemanticPredicate() -
isSyntacticPredicate
public abstract boolean isSyntacticPredicate() -
trackUseOfSyntacticPredicates
Notify the indicated grammar of any syn preds used within this context -
and
-
or
-
not
-
factorAnd
-
factorOr
-
getAndOperands
-
getOrOperands
-