Antlr4 CodeGenerator语言

时间:2016-06-26 13:34:05

标签: c# antlr4 iec61131-3

我正在制作IEC-61131到C ++转换器,这是使用C#完成的。我有一个很好的用于IEC-61131的Antlr4语法文件,我使用自定义监听器来生成输出C ++代码。我知道StringTemplate C#可以用来替换我的自定义Listener。但我找不到一个很好的例子如何使用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";
        }
    }

0 个答案:

没有答案