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);
}
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;
}
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;
}
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);
}
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);
}
Aggregations