Class SemanticContext.Predicate

java.lang.Object
org.antlr.analysis.SemanticContext
org.antlr.analysis.SemanticContext.Predicate
Direct Known Subclasses:
SemanticContext.FalsePredicate, SemanticContext.TruePredicate
Enclosing class:
SemanticContext

public static class SemanticContext.Predicate extends SemanticContext
  • Field Details

    • predicateAST

      public GrammarAST predicateAST
      The AST node in tree created from the grammar holding the predicate
    • gated

      protected boolean gated
      Is this a {...}?=> gating predicate or a normal disambiguating {..}? If any predicate in expression is gated, then expression is considered gated. The simple Predicate object's predicate AST's type is used to set gated to true if type==GATED_SEMPRED.
    • synpred

      protected boolean synpred
      syntactic predicates are converted to semantic predicates but synpreds are generated slightly differently.
    • INVALID_PRED_VALUE

      public static final int INVALID_PRED_VALUE
      See Also:
    • FALSE_PRED

      public static final int FALSE_PRED
      See Also:
    • TRUE_PRED

      public static final int TRUE_PRED
      See Also:
    • constantValue

      protected int constantValue
      sometimes predicates are known to be true or false; we need a way to represent this without resorting to a target language value like true or TRUE.
  • Constructor Details

  • Method Details

    • equals

      public boolean equals(Object o)
      Two predicates are the same if they are literally the same text rather than same node in the grammar's AST. Or, if they have the same constant value, return equal. As of July 2006 I'm not sure these are needed.
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • genExpr

      public org.stringtemplate.v4.ST genExpr(CodeGenerator generator, org.stringtemplate.v4.STGroup templates, DFA dfa)
      Description copied from class: SemanticContext
      Generate an expression that will evaluate the semantic context, given a set of output templates.
      Specified by:
      genExpr in class SemanticContext
    • getGatedPredicateContext

      public SemanticContext getGatedPredicateContext()
      Description copied from class: SemanticContext
      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.
      Specified by:
      getGatedPredicateContext in class SemanticContext
    • hasUserSemanticPredicate

      public boolean hasUserSemanticPredicate()
      Specified by:
      hasUserSemanticPredicate in class SemanticContext
    • isSyntacticPredicate

      public boolean isSyntacticPredicate()
      Specified by:
      isSyntacticPredicate in class SemanticContext
    • trackUseOfSyntacticPredicates

      public void trackUseOfSyntacticPredicates(Grammar g)
      Description copied from class: SemanticContext
      Notify the indicated grammar of any syn preds used within this context
      Overrides:
      trackUseOfSyntacticPredicates in class SemanticContext
    • toString

      public String toString()
      Overrides:
      toString in class Object