1

C# を使用して行われている IEC-61131 から 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";
        }
    }
4

0 に答える 0