2012-01-15 165 views
0

我对编写自定义语言很感兴趣。在深入Flex之前,我想问问在我开始研究之前是否有可能做到这一点,或许在工作一周后,我会意识到这是不可能的。我的目标是创建简单的脚本语言,该语言将被转换为C语言,而不会进一步编译,直到机器代码因为此代码进入嵌入式平台并需要以与正常语言不同的方式进行编译。我的观点是做出这样的事情:书面脚本 - > Parser根据规则将该代码转换为C代码 - >编译为嵌入式机器代码。自定义脚本语言

所以也许有人可以建议我这样做的方式。目前我阅读关于Flex &基于Bison的自定义语言,它被编译成机器码,但我认为这不是我需要的。

回答

3

您可能会阅读一些关于域名特定语言的文献,例如, DSL2011和更早的程序。

不要过分关注lexing和解析。大部分工作和问题都是在定义语言语义和实现。

将DSL转换为C并不是一件容易的事。例如见我的DSL2011 paper on MELT

阅读一些有关语言语义和语用学的好书,例如Programming Language Pragmatics Scott。

请同时阅读Garbage Collection Handbook(Jones,Hosking,Moss)。

最后,读C.Queinnec Lisp in Small Pieces,这主要是涵盖翻译动态类型语言C.

要知道,文法和解析的是在你的工作中最容易的事的一些版本。

您是否考虑过嵌入一些现有的脚本语言,如luapythonguile或使用像Parrotnekovm

现有的虚拟机不要忘了学习几种不同的特定领域或脚本或编程语言。你需要知道的不止一个!

我强烈建议您以源代码形式免费提供您的实现。将用户吸引到新的DSL是相当困难的,并且提供免费的实施降低了障碍。

+0

真的,谢谢你,我认为这是我正在寻找的东西。 – 2012-01-16 18:36:24

+0

很奇怪你接受了答案,但没有评价它! – 2012-01-16 18:42:52

+0

用户在获得15个代表权后才能获得积极特权。点。 – eriktous 2012-01-16 23:27:28