ANTLR4解析器生成器能够生成C语言代码吗?

3
我正在学习antlr4,文档中提到这个解析器生成器的主要目标是:Java、C#、Python2|3、JavaScript、Go、C++、Swift。而上一个版本antlr3还包括C。
我的问题是:是否有一种方法在antlr4中也生成C代码? 谢谢

2
Bart Kiers的回答表明,没有C目标。然而,很容易制作一个C头文件,声明在C++代码中定义的函数为extern "C"(由于它是C++代码,可以调用antlr4生成的C++代码)。这样的包装器是否能满足您的需求? - hyde
谢谢,也许这可能是一个选项。 - Valerio Coretti
3个回答

2

非常感谢,我正在寻找一个可以生成C、Java、Python以及可能的JavaScript(但不是必须)自顶向下解析器的解析器生成器。Antlr4可能是一个选项,因为它被广泛使用,但是对于我的大学课程,C是一个强制要求。您能否向我推荐其他具有这些功能的解析器生成器?您对Coco/R有什么看法? - Valerio Coretti
抱歉,我没有使用C目标的(LL)解析器生成器的经验 :( - Bart Kiers

1

ANTLR4的解析和代码生成是基于面向对象的特性,如继承和多态性进行设计的,因此生成C目标代码有一定挑战性,因为它不支持面向对象编程。


0
我已经在 Kotlin 通用代码中编写了一个解析器生成器。 原生代码是作为 Kotlin 目标的选项,因此解析器应该可以从 C 代码中调用。尽管我尚未进行过非常广泛的测试。
它不是 ANTLR4,ANTLR 生成的解析器要快得多。 但是定义语法的语法与 ANTLR 类似,因此如果您仍然需要某些内容,请随时尝试并告诉我结果如何。
详细信息可在此处找到: https://medium.com/@dr.david.h.akehurst/a-kotlin-multi-platform-parser-usable-from-a-jvm-or-javascript-59e870832a79

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接