我想使用C / C ++作为脚本语言解释器,但我不知道需要什么知识

电脑杂谈  发布时间:2020-04-23 19:05:23  来源:网络整理

如何写一个脚本解释器_脚本解释器怎么用_脚本解释器是什么

RednaxelaFX

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了

      热点图片
      拼命载入中...