protected StringTemplate genSemanticPredicateExpr(StringTemplateGroup templates, Transition edge) { DFA dfa = ((DFAState)edge.target).dfa; // which DFA are we in Label label = edge.label; SemanticContext semCtx = label.getSemanticContext(); return semCtx.genExpr(this,templates,dfa); }
protected ST genSemanticPredicateExpr(STGroup templates, Transition edge) { DFA dfa = ((DFAState)edge.target).dfa; // which DFA are we in Label label = edge.label; SemanticContext semCtx = label.getSemanticContext(); return semCtx.genExpr(this,templates,dfa); }
protected ST genSemanticPredicateExpr(STGroup templates, Transition edge) { DFA dfa = ((DFAState)edge.target).dfa; // which DFA are we in Label label = edge.label; SemanticContext semCtx = label.getSemanticContext(); return semCtx.genExpr(this,templates,dfa); }
protected StringTemplate genSemanticPredicateExpr(StringTemplateGroup templates, Transition edge) { DFA dfa = ((DFAState)edge.target).dfa; // which DFA are we in Label label = edge.label; SemanticContext semCtx = label.getSemanticContext(); return semCtx.genExpr(this,templates,dfa); }
boolean _hasSemPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); if ( ctx.hasUserSemanticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSemPred(edgeTarget, busy) ) return true; } return false; }
boolean _hasSemPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); if ( ctx.hasUserSemanticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSemPred(edgeTarget, busy) ) return true; } return false; }
boolean _hasSemPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); if ( ctx.hasUserSemanticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSemPred(edgeTarget, busy) ) return true; } return false; }
boolean _hasSynPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); // if ( ctx.toString().indexOf("synpred")>=0 ) { // System.out.println("has pred "+ctx.toString()+" "+ctx.isSyntacticPredicate()); // System.out.println(((SemanticContext.Predicate)ctx).predicateAST.token); // } if ( ctx.isSyntacticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSynPred(edgeTarget, busy) ) return true; } return false; }
boolean _hasSynPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); // if ( ctx.toString().indexOf("synpred")>=0 ) { // System.out.println("has pred "+ctx.toString()+" "+ctx.isSyntacticPredicate()); // System.out.println(((SemanticContext.Predicate)ctx).predicateAST.token); // } if ( ctx.isSyntacticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSynPred(edgeTarget, busy) ) return true; } return false; }
boolean _hasSynPred(DFAState d, Set<DFAState> busy) { busy.add(d); for (int i=0; i<d.getNumberOfTransitions(); i++) { Transition t = d.transition(i); if ( t.isSemanticPredicate() ) { SemanticContext ctx = t.label.getSemanticContext(); // if ( ctx.toString().indexOf("synpred")>=0 ) { // System.out.println("has pred "+ctx.toString()+" "+ctx.isSyntacticPredicate()); // System.out.println(((SemanticContext.Predicate)ctx).predicateAST.token); // } if ( ctx.isSyntacticPredicate() ) return true; } DFAState edgeTarget = (DFAState)t.target; if ( !busy.contains(edgeTarget) && _hasSynPred(edgeTarget, busy) ) return true; } return false; }
buf.append("-{").append(edge.label.getSemanticContext()).append("}?->");
buf.append("-{"+edge.label.getSemanticContext()+"}?->");
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
if ( transition0.label.isSemanticPredicate() ) { p = transition0.label.getSemanticContext();
if ( transition0.label.isSemanticPredicate() ) { p = transition0.label.getSemanticContext();
if ( transition0.label.isSemanticPredicate() ) { p = transition0.label.getSemanticContext();
if ( transition0.label.isSemanticPredicate() ) { p = transition0.label.getSemanticContext();