Package org.antlr.analysis
Class SemanticContext
java.lang.Object
org.antlr.analysis.SemanticContext
- Direct Known Subclasses:
SemanticContext.AND
,SemanticContext.NOT
,SemanticContext.OR
,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
-
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
abstract org.antlr.stringtemplate.StringTemplate
genExpr
(CodeGenerator generator, org.antlr.stringtemplate.StringTemplateGroup templates, DFA dfa) Generate an expression that will evaluate the semantic context, given a set of output templates.abstract SemanticContext
Given a semantic context expression tree, return a tree with all nongated predicates set to true and then reduced.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.antlr.stringtemplate.StringTemplate genExpr(CodeGenerator generator, org.antlr.stringtemplate.StringTemplateGroup templates, DFA dfa) Generate an expression that will evaluate the semantic context, given a set of output templates. -
isSyntacticPredicate
public abstract boolean isSyntacticPredicate() -
trackUseOfSyntacticPredicates
Notify the indicated grammar of any syn preds used within this context -
and
-
or
-
not
-