美文网首页
编程语言是怎么构造的(二 变量的定义和调用)

编程语言是怎么构造的(二 变量的定义和调用)

作者: zxbyh | 来源:发表于2018-11-29 16:30 被阅读0次

导航:

编程语言是怎么构造的(一 四则混合运算的实现)
编程语言是怎么构造的(二 变量的定义和调用)
编程语言是怎么构造的(三 函数的定义和调用)
编程语言是怎么构造的(四 将语法分析和执行分离)

 二 实现变量的功能

上一篇文章,我们实行了四则混合运算的功能。现在我们开始为它增加一个变量的功能。对于一个编程语言来说,变量是一个基本要素。

最终运行的效果是这样的:

准备工作

在DrRacket新建一个文件,file->New Tab,然后把上一遍文章我们的四则运算的代码打开。代码在https://gitee.com/zxbyh/scip/blob/master/R4/four-mixed-operations.rkt。代码的最前面加上 (require r5rs) 。

一 变量名的识别

目前我们的这个四则混合运算语言里面元素只有两个类型: 数字和操作符,因此符号就直接等于操作符了,但是现在我们加上变量了,那么符号就可能包含 操作符 和 变量名。因此要增加一个函数判断一个符号是否是一个变量名:

这个函数很好理解,一个元素是符号且不是操作符,那么就是变量名。

二 变量的存放和变量值的获取。

       框架frame就是变量的容器,变量和值分别通过两个列表来存放,按位对应。并把这两个列表再放到一个列表里面,形式如下:

       要检索变量的值就把变量表和值表都同时按位移动,找到变量后,那么这时的值表当前位置的元素也就是变量值了。

定义新变量的操作如下

如果不存在这个变量,就添加变量和值到框架

三 变量定义语句的分析

       接下来就需要我们的解释器能够 识别类似 (define x 1) 这样子的定义语句,然后从里面找到变量x 和变量的值 1,然后再利用上面的功能吧变量存放起。

先定义一个辅助函数 define语句的解释 这句现在还不能执

       这句现在还不能执行,我们接下来要修改m-eval 函数,参加框架的参数,这样才能从框架里面找到变量并执行。

四 代码块的分析

在修改m-eval函数之前,我们再做一件事情,我们目前的四则混合运算的代码都是一句表达式,现在我们进入变量后,就存在有变量定义和运算的多个表达式的情况了,这个叫代码模块。我们用 begin 来表示。

这就是一个线性递归,比较好理解

五 最后一步,m-eval函数加上框架参数

好了,到现在到最后一步了,修改一下m-eval函数。其实主要就是增加对 begin,define,变量的求值,并且将框架作为一个新增参数。

小有成就!!

小结

本节看完后,要深入理解变量存放的框架,这个是下一阶段函数定义和调用的基础。

这一部分的代码请到此下载https://gitee.com/zxbyh/scip/blob/master/R4/four-mixed-operations-valuable.rkt,然后在自己电脑上运行。

接下来我们将进入第三阶段: 函数的定义和调用

导航:

编程语言是怎么构造的(一 四则混合运算的实现)
编程语言是怎么构造的(二 变量的定义和调用)
编程语言是怎么构造的(三 函数的定义和调用)
编程语言是怎么构造的(四 将语法分析和执行分离)

相关文章

  • 编程语言是怎么构造的(四 将语法分析和执行分离)

    导航:编程语言是怎么构造的(一 四则混合运算的实现)编程语言是怎么构造的(二 变量的定义和调用)编程语言是怎么构造...

  • 编程语言是怎么构造的(二 变量的定义和调用)

    导航: 编程语言是怎么构造的(一 四则混合运算的实现)编程语言是怎么构造的(二 变量的定义和调用)编程语言是怎么构...

  • 编程语言是怎么构造的(三 函数的定义和调用)

    导航: 编程语言是怎么构造的(一 四则混合运算的实现)编程语言是怎么构造的(二 变量的定义和调用)编程语言是怎么构...

  • Swift 类

    Swift 类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言...

  • php变量

    一、基本知识 1、定义 编程语言中的变量相当于容器,承载变化的内容。 变量是怎么实现的?PHP的变量是使用C语言里...

  • Swift 类是构建代码所用的一种通用且灵活的构造体。我们可以为类定义属性(常量、变量)和方法。与其他编程语言所不...

  • 1、Go语言的变量与类型.md

    变量是任何一门编程语言的基础,每一门语言的变量定义风格也不尽相同,我们来看看 Go 语言定义变量的方式。 全局变量...

  • 面向对象(五)--四种调用模式call与apply

    编程语言的几个出发点 变量,基础语法 ,函数作用域 面向对象 1.函数的四种调用模式 函数模式 方法模式 构造器...

  • 箭头函数和普通函数的区别

    定义 变量提升 由于 js 的内存机制,箭头函数需要先定义后调用 构造函数 箭头函数作为匿名函数,不能作为构造函数...

  • 你不曾知道的JavaScript 内置对象解读

    摘要:JavaScript 是面向对象的编程语言 (OOP)。OOP 语言使我们有能力自定义对象和变量类型。(事实...

网友评论

      本文标题:编程语言是怎么构造的(二 变量的定义和调用)

      本文链接:https://www.haomeiwen.com/subject/ymffcqtx.html