Package org.stringtemplate.v4

Examples of org.stringtemplate.v4.NoIndentWriter


    @Override
    public ST genExpr(CodeGenerator generator,
                    STGroup templates,
                    DFA dfa)
    {
      ST eST;
      if ( templates!=null ) {
        if ( synpred ) {
          eST = templates.getInstanceOf("evalSynPredicate");
        }
        else {
          eST = templates.getInstanceOf("evalPredicate");
          generator.grammar.decisionsWhoseDFAsUsesSemPreds.add(dfa);
        }
        String predEnclosingRuleName = predicateAST.enclosingRuleName;
        /*
        String decisionEnclosingRuleName =
          dfa.getNFADecisionStartState().getEnclosingRule();
        // if these rulenames are diff, then pred was hoisted out of rule
        // Currently I don't warn you about this as it could be annoying.
        // I do the translation anyway.
        */
        //eST.add("pred", this.toString());
        if ( generator!=null ) {
          eST.add("pred",
                   generator.translateAction(predEnclosingRuleName,predicateAST));
        }
      }
      else {
        eST = new ST("<pred>");
        eST.add("pred", this.toString());
        return eST;
      }
      if ( generator!=null ) {
        String description =
          generator.target.getTargetStringLiteralFromString(this.toString());
        eST.add("description", description);
      }
      return eST;
    }
View Full Code Here


    }

    // now that we have computed list of specialStates, gen code for 'em
    for (int i = 0; i < specialStates.size(); i++) {
      DFAState ss = specialStates.get(i);
      ST stateST =
        generator.generateSpecialState(ss);
      specialStateSTs.add(stateST);
    }

    // check that the tables are not messed up by encode/decode
View Full Code Here

    public String getDOT(State startState) {
    if ( startState==null ) {
      return null;
    }
    // The output DOT graph for visualization
    ST dot;
    markedStates = new HashSet<Object>();
        if ( startState instanceof DFAState ) {
            dot = stlib.getInstanceOf("dfa");
      dot.add("startState",
          Utils.integer(startState.stateNumber));
      dot.add("useBox",
          Tool.internalOption_ShowNFAConfigsInDFA);
      walkCreatingDFADOT(dot, (DFAState)startState);
        }
        else {
            dot = stlib.getInstanceOf("nfa");
      dot.add("startState",
          Utils.integer(startState.stateNumber));
      walkRuleNFACreatingDOT(dot, startState);
        }
    dot.add("rankdir", rankdir);
        return dot.render();
    }
View Full Code Here

        }

    markedStates.add(Utils.integer(s.stateNumber)); // mark this node as completed.

        // first add this node
        ST st;
        if ( s.isAcceptState() ) {
            st = stlib.getInstanceOf("stopstate");
        }
        else {
            st = stlib.getInstanceOf("state");
        }
        st.add("name", getStateLabel(s));
        dot.add("states", st);

        // make a DOT edge for each transition
    for (int i = 0; i < s.getNumberOfTransitions(); i++) {
      Transition edge = s.transition(i);
      /*
      System.out.println("dfa "+s.dfa.decisionNumber+
        " edge from s"+s.stateNumber+" ["+i+"] of "+s.getNumberOfTransitions());
      */
      if ( STRIP_NONREDUCED_STATES ) {
        if ( edge.target instanceof DFAState &&
          ((DFAState)edge.target).getAcceptStateReachable()!=DFA.REACHABLE_YES )
        {
          continue; // don't generate nodes for terminal states
        }
      }
      st = stlib.getInstanceOf("edge");
      st.add("label", getEdgeLabel(edge));
      st.add("src", getStateLabel(s));
            st.add("target", getStateLabel(edge.target));
      st.add("arrowhead", arrowhead);
            dot.add("edges", st);
            walkCreatingDFADOT(dot, (DFAState)edge.target); // keep walkin'
        }
    }
View Full Code Here

        }

        markedStates.add(s); // mark this node as completed.

        // first add this node
        ST stateST;
        if ( s.isAcceptState() ) {
            stateST = stlib.getInstanceOf("stopstate");
        }
        else {
            stateST = stlib.getInstanceOf("state");
        }
        stateST.add("name", getStateLabel(s));
        dot.add("states", stateST);

        if ( s.isAcceptState() )  {
            return; // don't go past end of rule node to the follow states
        }

        // special case: if decision point, then line up the alt start states
        // unless it's an end of block
    if ( ((NFAState)s).isDecisionState() ) {
      GrammarAST n = ((NFAState)s).associatedASTNode;
      if ( n!=null && n.getType()!=ANTLRParser.EOB ) {
        ST rankST = stlib.getInstanceOf("decision-rank");
        NFAState alt = (NFAState)s;
        while ( alt!=null ) {
          rankST.add("states", getStateLabel(alt));
          if ( alt.transition[1] !=null ) {
            alt = (NFAState)alt.transition[1].target;
          }
          else {
            alt=null;
          }
        }
        dot.add("decisionRanks", rankST);
      }
    }

        // make a DOT edge for each transition
    ST edgeST;
    for (int i = 0; i < s.getNumberOfTransitions(); i++) {
            Transition edge = s.transition(i);
            if ( edge instanceof RuleClosureTransition ) {
                RuleClosureTransition rr = ((RuleClosureTransition)edge);
                // don't jump to other rules, but display edge to follow node
                edgeST = stlib.getInstanceOf("edge");
        if ( rr.rule.grammar != grammar ) {
          edgeST.add("label", "<" + rr.rule.grammar.name + "." + rr.rule.name + ">");
        }
        else {
          edgeST.add("label", "<" + rr.rule.name + ">");
        }
        edgeST.add("src", getStateLabel(s));
        edgeST.add("target", getStateLabel(rr.followState));
        edgeST.add("arrowhead", arrowhead);
                dot.add("edges", edgeST);
        walkRuleNFACreatingDOT(dot, rr.followState);
                continue;
            }
      if ( edge.isAction() ) {
        edgeST = stlib.getInstanceOf("action-edge");
      }
      else if ( edge.isEpsilon() ) {
        edgeST = stlib.getInstanceOf("epsilon-edge");
      }
      else {
        edgeST = stlib.getInstanceOf("edge");
      }
      edgeST.add("label", getEdgeLabel(edge));
            edgeST.add("src", getStateLabel(s));
      edgeST.add("target", getStateLabel(edge.target));
      edgeST.add("arrowhead", arrowhead);
            dot.add("edges", edgeST);
            walkRuleNFACreatingDOT(dot, edge.target); // keep walkin'
        }
    }
View Full Code Here

  }

  /** Return a new template instance every time someone tries to print
   *  a Message.
   */
  public ST getMessageTemplate() { return new ST(msgST); }
View Full Code Here

  public ST getMessageTemplate() { return new ST(msgST); }

  /** Return a new template instance for the location part of a Message.
   *  TODO: Is this really necessary? -Kay
   */
  public ST getLocationTemplate() { return new ST(locationST); }
View Full Code Here

    super(msgID,arg,null);
    this.e = e;
  }
  @Override
  public String toString() {
    ST st = getMessageTemplate();
    if ( arg!=null ) {
      st.add("arg", arg);
    }
    if ( arg2!=null ) {
      st.add("arg2", arg2);
    }
    if ( e!=null ) {
      st.add("exception", e);
      st.add("stackTrace", e.getStackTrace());
    }
    return super.toString(st);
  }
View Full Code Here

    column = decisionASTNode.getCharPositionInLine();
    String fileName = probe.dfa.nfa.grammar.getFileName();
    if ( fileName!=null ) {
      file = fileName;
    }
    ST st = getMessageTemplate();
    st.add("enclosingRule",
            probe.dfa.getNFADecisionStartState().enclosingRule.name);

    return super.toString(st);
  }
View Full Code Here

    String fileName = probe.dfa.nfa.grammar.getFileName();
    if ( fileName!=null ) {
      file = fileName;
    }

    ST st = getMessageTemplate();
    st.add("targetRules", targetRules);
    st.add("alt", alt);
    st.add("callSiteStates", callSiteStates);

    List<Label> labels =
      probe.getSampleNonDeterministicInputSequence(sampleBadState);
    String input = probe.getInputSequenceDisplay(labels);
    st.add("input", input);

    return super.toString(st);
  }
View Full Code Here

TOP

Related Classes of org.stringtemplate.v4.NoIndentWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.