use of org.stringtemplate.v4.STGroupFile in project antlr4 by antlr.
the class BaseRuntimeTest method testLexer.
public void testLexer(RuntimeTestDescriptor descriptor) throws Exception {
RuntimeTestUtils.mkdir(delegate.getTempParserDirPath());
Pair<String, String> pair = descriptor.getGrammar();
ClassLoader cloader = getClass().getClassLoader();
URL templates = cloader.getResource("org/antlr/v4/test/runtime/templates/" + descriptor.getTarget() + ".test.stg");
STGroupFile targetTemplates = new STGroupFile(templates, "UTF-8", '<', '>');
targetTemplates.registerRenderer(String.class, new StringRenderer());
// write out any slave grammars
List<Pair<String, String>> slaveGrammars = descriptor.getSlaveGrammars();
if (slaveGrammars != null) {
for (Pair<String, String> spair : slaveGrammars) {
STGroup g = new STGroup('<', '>');
g.registerRenderer(String.class, new StringRenderer());
g.importTemplates(targetTemplates);
ST grammarST = new ST(g, spair.b);
writeFile(delegate.getTempParserDirPath(), spair.a + ".g4", grammarST.render());
}
}
String grammarName = pair.a;
String grammar = pair.b;
STGroup g = new STGroup('<', '>');
g.registerRenderer(String.class, new StringRenderer());
g.importTemplates(targetTemplates);
ST grammarST = new ST(g, grammar);
grammar = grammarST.render();
String found = delegate.execLexer(grammarName + ".g4", grammar, grammarName, descriptor.getInput(), descriptor.showDFA());
assertCorrectOutput(descriptor, delegate, found);
}
use of org.stringtemplate.v4.STGroupFile in project antlr4 by antlr.
the class BaseRuntimeTest method testParser.
public void testParser(RuntimeTestDescriptor descriptor) throws Exception {
RuntimeTestUtils.mkdir(delegate.getTempParserDirPath());
Pair<String, String> pair = descriptor.getGrammar();
ClassLoader cloader = getClass().getClassLoader();
URL templates = cloader.getResource("org/antlr/v4/test/runtime/templates/" + descriptor.getTarget() + ".test.stg");
STGroupFile targetTemplates = new STGroupFile(templates, "UTF-8", '<', '>');
targetTemplates.registerRenderer(String.class, new StringRenderer());
// write out any slave grammars
List<Pair<String, String>> slaveGrammars = descriptor.getSlaveGrammars();
if (slaveGrammars != null) {
for (Pair<String, String> spair : slaveGrammars) {
STGroup g = new STGroup('<', '>');
g.registerRenderer(String.class, new StringRenderer());
g.importTemplates(targetTemplates);
ST grammarST = new ST(g, spair.b);
writeFile(delegate.getTempParserDirPath(), spair.a + ".g4", grammarST.render());
}
}
String grammarName = pair.a;
String grammar = pair.b;
STGroup g = new STGroup('<', '>');
g.importTemplates(targetTemplates);
g.registerRenderer(String.class, new StringRenderer());
ST grammarST = new ST(g, grammar);
grammar = grammarST.render();
String found = delegate.execParser(grammarName + ".g4", grammar, grammarName + "Parser", grammarName + "Lexer", grammarName + "Listener", grammarName + "Visitor", descriptor.getStartRule(), descriptor.getInput(), descriptor.showDiagnosticErrors());
assertCorrectOutput(descriptor, delegate, found);
}
use of org.stringtemplate.v4.STGroupFile in project antlr4 by antlr.
the class ErrorManager method setFormat.
/**
* The format gets reset either from the Tool if the user supplied a command line option to that effect
* Otherwise we just use the default "antlr".
*/
public void setFormat(String formatName) {
this.formatName = formatName;
String fileName = FORMATS_DIR + formatName + STGroup.GROUP_FILE_EXTENSION;
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource(fileName);
if (url == null) {
cl = ErrorManager.class.getClassLoader();
url = cl.getResource(fileName);
}
if (url == null && formatName.equals("antlr")) {
rawError("ANTLR installation corrupted; cannot find ANTLR messages format file " + fileName);
panic();
} else if (url == null) {
rawError("no such message format file " + fileName + " retrying with default ANTLR format");
// recurse on this rule, trying the default message format
setFormat("antlr");
return;
}
format = new STGroupFile(url, "UTF-8", '<', '>');
format.load();
if (!initSTListener.errors.isEmpty()) {
rawError("ANTLR installation corrupted; can't load messages format file:\n" + initSTListener.toString());
panic();
}
boolean formatOK = verifyFormat();
if (!formatOK && formatName.equals("antlr")) {
rawError("ANTLR installation corrupted; ANTLR messages format file " + formatName + ".stg incomplete");
panic();
} else if (!formatOK) {
// recurse on this rule, trying the default message format
setFormat("antlr");
}
}
use of org.stringtemplate.v4.STGroupFile in project antlr4 by antlr.
the class BuildDependencyGenerator method loadDependencyTemplates.
public void loadDependencyTemplates() {
if (templates != null)
return;
String fileName = "org/antlr/v4/tool/templates/depend.stg";
templates = new STGroupFile(fileName, "UTF-8");
}
use of org.stringtemplate.v4.STGroupFile in project antlr4 by antlr.
the class Target method loadTemplates.
protected STGroup loadTemplates() {
String groupFileName = CodeGenerator.TEMPLATE_ROOT + "/" + getLanguage() + "/" + getLanguage() + STGroup.GROUP_FILE_EXTENSION;
STGroup result = null;
try {
result = new STGroupFile(groupFileName);
} catch (IllegalArgumentException iae) {
gen.tool.errMgr.toolError(ErrorType.MISSING_CODE_GEN_TEMPLATES, iae, language);
}
if (result == null)
return null;
result.registerRenderer(Integer.class, new NumberRenderer());
result.registerRenderer(String.class, new StringRenderer());
result.setListener(new STErrorListener() {
@Override
public void compileTimeError(STMessage msg) {
reportError(msg);
}
@Override
public void runTimeError(STMessage msg) {
reportError(msg);
}
@Override
public void IOError(STMessage msg) {
reportError(msg);
}
@Override
public void internalError(STMessage msg) {
reportError(msg);
}
private void reportError(STMessage msg) {
getCodeGenerator().tool.errMgr.toolError(ErrorType.STRING_TEMPLATE_WARNING, msg.cause, msg.toString());
}
});
return result;
}
Aggregations