

133个人同意答案
原始问题:
我想使用C / C ++作为脚本语言解析器,但是我不知道我需要什么知识?
首先,请问问题是“解析器”(parser)还是“解释器”(解释器)?
![]()
在编程语言实现的上下文中,“解析”通常是指“语法分析”; “说明”是与代码执行相关的名词. 这两个名词经常混合在一起并且是错误的.
第二,编译器和解释器之间是什么关系,我想放置这个门户网站: 为什么Java在解释和执行时不直接解释源代码? -RednaxelaFX的答案. 我给出了一个简单的示例,说明如何将“通用编译器”工作流程转换为“解释器”. 可以看出,解释器中的许多概念实际上与编译器共有脚本解释器怎么用,但是有些事情可以忽略也可以不省略,或者应该在编译器中进行的分析在运行时留给解释器. 有关详细信息,请参见门户.
同样,写一个口译员需要什么知识. 前面有很多可靠的答案,受试者可以参考它们进行练习.
就像编写一个简单的LISP实现/ Scheme实现一样,它很容易上手. 最好阅读“计算机程序的结构和解释”和“小计划者”作为补充.
如果要实现类似于C语法的命令式语言的解释器,则可以从最基本的地方慢慢进行练习. 以下是一个假设的顺序:

在上面的基础上扩展,以更好地支持“词法分析”的概念,例如,允许空间的外观继续扩展,增加对变量和赋值的支持. 这时,可以解释执行如下:
a = 1 + 2;
b = a + 3 * 4;
代码. 此时脚本解释器怎么用,您需要添加两种支持: 继续扩展,添加控制流语句,例如if-else语句. 从这里开始,事情变得很有趣: 在前面的步骤中,所有代码将按顺序执行;并且一旦添加了对控制流语句的支持,输入程序中可能会有一些条件执行,如何处理它,还有很大的发挥空间,例如是否引入抽象语法树(AST). 续集被扩展为支持循环语句. 续集扩展,支持函数声明和调用. 完成上述步骤后,出现了原型解释器.
巧合的是,@许式伟最近发表的“一周内的语言”演讲也发展了具有类似想法的语言解释器实现. 如果主题感兴趣,他也可以参考他的经验.
他所做的qlang解释器的实现在另一个答案中也提到了一点. 如果您有兴趣,请阅读: 关于四函数编译器中的-C的哪些文章? -RednaxelaFX的答案

编辑于2016-02-22

有7个人同意答案
编写Lisp解释器很容易
您需要以下物品:

读取(包括读取器,令牌,解析器等)
评估-主要是实现评估
打印和循环太琐碎了,所以我不再谈论它
然后您有了Lisp REPL
将Reader的输入从stdin更改为file的输入,并且您有了解释器
发布于2016-02-21
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-186262-1.html
一问怎么回事说分销商不送RIO了
@广州白菜研究院凡凡凡凡凡凡