我正在制作一个 IEC-61131 到 C++ 的转换器,这是使用 C# 完成的。我有一个适用于 IEC-61131 的很好的 Antlr4 语法文件,并且我正在使用自定义侦听器来生成输出 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";
}
}