如何使用C编写脚本语言?

时间:2010-08-26 18:40:12

标签: c scripting

如何使用C编写脚本语言? 任何的想法?链接?

7 个答案:

答案 0 :(得分:16)

您的意思是,如何编写用C语言解释的语言?

如果是这样,您需要查看以下主题的维基百科和其他来源:

  • 词法分析(将源代码转换为标记,如关键字,整数/浮点文字,字符串文字等)
  • 解析(根据预定义的,通常是无上下文的语法检查这些令牌,以确保程序语法正确)
  • 语法树(通常在解析期间构建;创建可以遍历的中间树表示以执行代码)
  • 符号表(基本上,如何查找变量名称)
  • 窥孔优化(如果您希望让代码运行得更快,以换取在预执行阶段花费更多时间)

这比你想象的要多得多......快乐阅读!

答案 1 :(得分:5)

您可以查看书籍"The UNIX programming environment"

http://cm.bell-labs.com/cm/cs/upe/covers/english4.gif

在本书的最后,几乎是最后一章,作者用C语言编写了一个小型翻译,并逐步提供了足够详细的信息。非常有趣,非常容易理解。

该解释器的源代码是here

答案 2 :(得分:4)

为什么不查看(简单)脚本语言的C代码?也许Lua? (link

也许您还应该阅读关于parser generators的一些内容,这是您的程序可以解释语言的第一个构建块。第二个块是实际做的,正在解析的内容(有时你可以将它集成到解析器中,它可以在每个令牌/每个被解析的结构上回调函数)。简单的例子,比如解析和执行数学公式可能有所帮助。

答案 3 :(得分:3)

有一本名为"Constructing Language Processors for Little Languages"的好书,可以帮助你入门。这是非常务实的,并解释了随着您的需求变得更加复杂的各种选择。

除此之外,你基本上想要研究一两本关于编译器和口译员的书。如果你想要一个阻力较小的路径,并且你这样做是为了理解概念而不是你需要的类或工作项目,那么看一下C的替代方案,比如Lisp或Scheme,这样可以更容易地构建在小实验上。或者学习用更简单的语言构建DSL(Boo,Groovy)。

答案 4 :(得分:1)

这是一个非常普遍的问题,很可能会被关闭,但是嘿,我不妨发布这个答案:Lua(http://www.lua.org)是一种用C语言编写的非常流行的脚本语言。你可以用它来做灵感。

答案 5 :(得分:1)

我的建议是从Recursive Descent Parser开始。

如果你喜欢这些东西,那么你应该明确地获得Dragonbook的副本。

答案 6 :(得分:0)

您可以查看ANTLR [link]