1 module antlr.v4.runtime.atn.PrecedencePredicateTransition; 2 3 import std.conv; 4 import antlr.v4.runtime.atn.AbstractPredicateTransition; 5 import antlr.v4.runtime.atn.ATNState; 6 import antlr.v4.runtime.atn.TransitionStates; 7 import antlr.v4.runtime.atn.SemanticContext; 8 9 /** 10 * TODO add class description 11 */ 12 class PrecedencePredicateTransition : AbstractPredicateTransition 13 { 14 15 /** 16 * @uml 17 * @final 18 */ 19 public int precedence; 20 21 public this(ATNState target, int precedence) 22 { 23 super(target); 24 this.precedence = precedence; 25 } 26 27 /** 28 * @uml 29 * @override 30 */ 31 public override int getSerializationType() 32 { 33 return TransitionStates.PRECEDENCE; 34 } 35 36 /** 37 * @uml 38 * @override 39 */ 40 public override bool isEpsilon() 41 { 42 return true; 43 } 44 45 /** 46 * @uml 47 * @override 48 */ 49 public override bool matches(int symbol, int minVocabSymbol, int maxVocabSymbol) 50 { 51 return false; 52 } 53 54 public SemanticContext.PrecedencePredicate getPredicate() 55 { 56 auto sc = new SemanticContext; 57 return sc..new PrecedencePredicate(precedence); 58 } 59 60 /** 61 * @uml 62 * @override 63 */ 64 public override string toString() 65 { 66 return to!string(precedence) ~ " >= _p"; 67 } 68 69 }