Antlr4 CodeGenerator Язык
Я делаю конвертер IEC-61131 в C++, который делается с использованием C#. У меня есть хороший файл грамматики Antlr4 для IEC-61131, и я использую пользовательский прослушиватель для генерации выходного кода C++. Я знаю, что StringTemplate C# может быть использован для замены моего пользовательского слушателя. Но я не могу найти хороший пример того, как использовать StringTemplate CodeGenerator и выбрать целевой язык CPP. Кто-нибудь может дать направление здесь? Или привести пример? Вот код у меня до сих пор.
private void Button_Click(object sender, RoutedEventArgs e)
{
AntlrInputStream input = new AntlrInputStream(this.ViewModel.stText);
STLexer lexer = new STLexer(input);
lexer.RemoveErrorListeners();
lexer.AddErrorListener(new ThrowExceptionErrorListener());
CommonTokenStream tokens = new CommonTokenStream(lexer);
STParser parser = new STParser(tokens);
IParseTree tree = parser.program();
if (parser.NumberOfSyntaxErrors > 0)
{
Build.Text = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz") + "\r" + parser.NumberOfSyntaxErrors.ToString() + " Build Error";
CEditor.Text = "";
}
else
{
var listener = new ExtractInterfaceListener(parser);
ParseTreeWalker walker = new ParseTreeWalker();
walker.Walk(listener, tree);
CEditor.Text = listener.code;
Build.Text = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz") + "\r" + "No Errors";
}
}