我正在开发一个新语言实现的项目。我被分配了为该语言构建翻译器的任务。翻译器应该用Java构建,翻译输出应该将新语言的子集生成为C.我对此几乎没有问题: 1.如何处理? 2.我应该更多地强调哪个阶段?它应该是编译器的代码生成器阶段吗? 3.我是否需要为目标语言增加一个语法?
提前感谢。
答案 0 :(得分:2)
我会调查ANTLR,如果你还没有意识到它。来自http://www.antlr.org/about.html(强调我的):
ANTLR,另一种语言识别工具,是一种语言工具 提供了构建识别器,编译器和 翻译中包含语法描述的翻译 各种目标语言。 ANTLR自动化构建 语言识别器。从正式语法中,ANTLR生成一个程序 确定句子是否符合该语言。 其他 这是一个编写其他程序的程序。通过添加代码 对语法的片段,识别器成为翻译或 解释器。 ANTLR为中间形式提供了出色的支持 树木建筑,树木行走,翻译和提供 复杂的自动错误恢复和报告。
作为一个额外的好处,ANTLR是用Java编写的,可以轻松调用。
有关其他详细信息,请访问http://en.wikipedia.org/wiki/ANTLR。