Search in sources :

Example 86 with ST

use of edu.princeton.cs.algs4.ST in project antlr4 by tunnelvisionlabs.

the class ErrorManager method panic.

public void panic(ErrorType errorType, Object... args) {
    ToolMessage msg = new ToolMessage(errorType, args);
    ST msgST = getMessageTemplate(msg);
    String outputMsg = msgST.render();
    if (formatWantsSingleLineMessage()) {
        outputMsg = outputMsg.replace('\n', ' ');
    }
    panic(outputMsg);
}
Also used : ST(org.stringtemplate.v4.ST)

Example 87 with ST

use of edu.princeton.cs.algs4.ST in project antlr4 by tunnelvisionlabs.

the class ErrorManager method getReportFormat.

public ST getReportFormat(ErrorSeverity severity) {
    ST st = format.getInstanceOf("report");
    st.add("type", severity.getText());
    return st;
}
Also used : ST(org.stringtemplate.v4.ST)

Example 88 with ST

use of edu.princeton.cs.algs4.ST in project antlr4 by tunnelvisionlabs.

the class ANTLRMessage method getMessageTemplate.

public ST getMessageTemplate(boolean verbose) {
    ST messageST = new ST(getErrorType().msg);
    messageST.impl.name = errorType.name();
    messageST.add("verbose", verbose);
    Object[] args = getArgs();
    for (int i = 0; i < args.length; i++) {
        String attr = "arg";
        if (i > 0)
            attr += i + 1;
        messageST.add(attr, args[i]);
    }
    // some messages ref arg2
    if (args.length < 2)
        messageST.add("arg2", null);
    Throwable cause = getCause();
    if (cause != null) {
        messageST.add("exception", cause);
        messageST.add("stackTrace", cause.getStackTrace());
    } else {
        // avoid ST error msg
        messageST.add("exception", null);
        messageST.add("stackTrace", null);
    }
    return messageST;
}
Also used : ST(org.stringtemplate.v4.ST)

Example 89 with ST

use of edu.princeton.cs.algs4.ST in project antlr4 by tunnelvisionlabs.

the class DOTGenerator method getDOT.

public String getDOT(DFA dfa, boolean isLexer) {
    if (dfa.s0.get() == null)
        return null;
    ST dot = stlib.getInstanceOf("dfa");
    dot.add("name", "DFA" + dfa.decision);
    dot.add("startState", dfa.s0.get().stateNumber);
    // dot.add("useBox", Tool.internalOption_ShowATNConfigsInDFA);
    dot.add("rankdir", rankdir);
    // define stop states first; seems to be a bug in DOT where doublecircle
    for (DFAState d : dfa.states.keySet()) {
        if (!d.isAcceptState())
            continue;
        ST st = stlib.getInstanceOf("stopstate");
        st.add("name", "s" + d.stateNumber);
        st.add("label", getStateLabel(d));
        dot.add("states", st);
    }
    for (DFAState d : dfa.states.keySet()) {
        if (d.isAcceptState())
            continue;
        if (d.stateNumber == Integer.MAX_VALUE)
            continue;
        ST st = stlib.getInstanceOf("state");
        st.add("name", "s" + d.stateNumber);
        st.add("label", getStateLabel(d));
        dot.add("states", st);
    }
    for (DFAState d : dfa.states.keySet()) {
        Map<Integer, DFAState> edges = d.getEdgeMap();
        for (Map.Entry<Integer, DFAState> entry : edges.entrySet()) {
            DFAState target = entry.getValue();
            if (target == null)
                continue;
            if (target.stateNumber == Integer.MAX_VALUE)
                continue;
            int ttype = entry.getKey();
            String label = String.valueOf(ttype);
            if (isLexer)
                label = "'" + getEdgeLabel(new StringBuilder().appendCodePoint(entry.getKey()).toString()) + "'";
            else if (grammar != null)
                label = grammar.getTokenDisplayName(ttype);
            ST st = stlib.getInstanceOf("edge");
            st.add("label", label);
            st.add("src", "s" + d.stateNumber);
            st.add("target", "s" + target.stateNumber);
            st.add("arrowhead", arrowhead);
            dot.add("edges", st);
        }
    }
    String output = dot.render();
    return Utils.sortLinesInString(output);
}
Also used : ST(org.stringtemplate.v4.ST) DFAState(org.antlr.v4.runtime.dfa.DFAState) Map(java.util.Map)

Example 90 with ST

use of edu.princeton.cs.algs4.ST in project antlr4 by tunnelvisionlabs.

the class DefaultToolListener method warning.

@Override
public void warning(ANTLRMessage msg) {
    ST msgST = tool.errMgr.getMessageTemplate(msg);
    String outputMsg = msgST.render();
    if (tool.errMgr.formatWantsSingleLineMessage()) {
        outputMsg = outputMsg.replace('\n', ' ');
    }
    System.err.println(outputMsg);
}
Also used : ST(org.stringtemplate.v4.ST)

Aggregations

ST (org.stringtemplate.v4.ST)197 GrammarAST (org.antlr.v4.tool.ast.GrammarAST)37 STGroup (org.stringtemplate.v4.STGroup)24 File (java.io.File)19 ArrayList (java.util.ArrayList)16 IOException (java.io.IOException)12 STGroupFile (org.stringtemplate.v4.STGroupFile)12 Path (java.nio.file.Path)10 Test (org.junit.Test)10 ATNFactory (org.antlr.v4.automata.ATNFactory)9 LexerATNFactory (org.antlr.v4.automata.LexerATNFactory)9 ParserATNFactory (org.antlr.v4.automata.ParserATNFactory)9 CodeGenerator (org.antlr.v4.codegen.CodeGenerator)9 SemanticPipeline (org.antlr.v4.semantics.SemanticPipeline)9 Grammar (org.antlr.v4.tool.Grammar)9 LexerGrammar (org.antlr.v4.tool.LexerGrammar)9 STGroupString (org.stringtemplate.v4.STGroupString)9 LinkedHashMap (java.util.LinkedHashMap)7 URL (java.net.URL)6 Map (java.util.Map)6