创建自己的语言

时间:2008-12-13 19:33:13

标签: language-design

如果我想创建自己的语言,有什么工具可以帮助我吗?我听说过yacc,但我想知道如何在语言中实现我想要的功能。

4 个答案:

答案 0 :(得分:10)

密切相关的问题(通过在stackoverflow上搜索[compiler]来完成):

类似主题(来自同一搜索):


编辑:我知道stackoverflow相关问题搜索不是我们想要的,但是 我们真的需要这个主题的第n次迭代吗? MEH!

答案 1 :(得分:9)

我推荐的第一个工具是Dragon Book。这是构建编译器的参考。设计语言并非易事,实现它更加困难。龙书帮助那里。本书甚至参考了标准的unix工具lex和yacc。 gnu等效工具称为flex和bison。它们都生成词法分析器和解析器。还存在用于生成词法分析器和解析器的更现代的工具,例如,对于java有ANTLR(我还记得javacc和CUP,但我只用了自己的ANTLR)。事实上,ANTLR结合了解析器和词法分析器以及eclipse插件可供使用,这使得它非常舒适。但要比较它们,你需要的解析器类型,并知道你需要它们,你应该阅读龙书。还有其他一些你需要考虑的事情,比如运行时环境,编程范例,....

如果你已经有某些设计理念并需要某个步骤或细节的帮助,那么这些产品会更有帮助。

答案 2 :(得分:4)

ANTLR是一个用Java编写的非常好的解析器生成器。还有一个terrific book

答案 3 :(得分:2)

我喜欢Flex(快速Lex)[词汇扫描仪]
和Bison(毛茸茸的Yacc)[又一个编译器编译器]

两者都是免费的,并且可用于所有* NIX安装。对于Windows,只需安装cygwin 但我老了。

通过使用这些工具,您还可以在互联网上找到许多流行语言的lex规则和yacc gramers。从而为您提供快速启动和运行的方法,然后您可以随时自定义语法。

示例:算术表达式处理[优先顺序等是完成死亡问题]您可以从网上快速获取语法。

考虑的另一种方法是为GCC写一个前端扩展 非平凡但如果你想要一个编译语言,它会在代码生成部分节省大量的工作(你仍然需要了解爱情并理解flex / bison)。