gpt4 book ai didi

antlr - 有没有办法使用一种针对多种语言的 ANTLR 语法?

转载 作者:行者123 更新时间:2023-12-02 05:09:15 25 4
gpt4 key购买 nike

我正在 Visual Studio 中使用自定义语言的 ANTLR 语法开发语言服务。然而,语法中充满了 C++ 代码来处理预处理器指令和编译器的效率原因。

Visual Studio 的语言服务很难用 C++ 编写,所以我需要一个 C# 解析器来使用相同的语言。这意味着我必须设置 language=CSharp2并从语法中剥离所有 C++ 代码。

我正在考虑编写一个小导出器,从语法中剥离所有 C++ 代码,并转换像 { $channel = HIDDEN; } 这样的简单语句。至 { $channel = TokenChannels.Hidden; } .

有没有更聪明的方法来做到这一点?喜欢通过模板,还是在语法中嵌入两种语言的小技巧?

最佳答案

我会使用 AST 将问题分为两个阶段。让您的解析器采用目标语言中性语法(生成 AST),并使用 Antlr 工具的 -target 选项以您选择的目标语言(C++、C#、Java 等)生成解析器。

然后用你的 Action 在目标语言中实现 AST walker。这样做的好处是,一旦您完成了一个 AST walker,您就可以复制它,只需更改另一种目标语言的操作即可。

关于antlr - 有没有办法使用一种针对多种语言的 ANTLR 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7515421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com