项目介绍

用python实现的basic解释器

运行方式

  • 点击run目录下的run.bat或点击debug目录下的debug.bat

在这里插入图片描述
在这里插入图片描述

  • 也可以在命令行中输入run.batdebug.bat

在这里插入图片描述
在这里插入图片描述

目录结构

目录结构如下:

在这里插入图片描述

如上所示,debug目录和run目录的所有文件名除了.bat文件外是一样的,两者的区别如下:

  • 运行debug目录下的debug.bat, 会输出解释器的整个工作流程,即:

    词法分析语法分析求值计算打印显示

  • 运行run目录下的run.bat, 会直接得到执行结果

比如,在解释器中输入5*2+3

  • debug.bat输出如下:

在这里插入图片描述

  • run.bat输出如下:

在这里插入图片描述

语法

命令

  • 在终端中输入以$开头的文本,解释器将执行对应的命令

  • 比如,清屏输入$cls,退出程序输入$exit

在这里插入图片描述

变量

  • 定义变量使用var关键字,变量的命名规则与C语言相同

  • 变量的类型有数值列表布尔字符串,其中布尔的定义与C语言相同,即0值为false、非0值为true

  • 变量声明时无需指定类型,解释器会进行自动推导

  • 变量支持+-*/^,其中^为幂运算符

在这里插入图片描述

  • 需要注意的是,不同于一般的编程语言,你无法对一个变量进行重新赋值,但你可以重新声明将其覆盖

在这里插入图片描述

  • 声明字符串时用一对"包裹,不支持'

在这里插入图片描述

  • 声明列表时用[]包裹,与python类似列表里每个元素的数据类型可以不同,同时列表可以嵌套,需要注意的是:一旦对列表使用了运算符,就会改变列表本身元素的值

在这里插入图片描述

  • 另外一点值得注意的是,我已经预定义了4个变量,这意味着你在命名变量时应该避免与它们冲突,同时也意味着你可以不声明直接使用它们

在这里插入图片描述

函数

  • 定义函数使用fun关键字,函数的命名规则与变量的命名规则相同
  • 函数会返回最后一个表达式的值

在这里插入图片描述

  • 支持匿名函数,同时可以将函数作为变量赋值,这意味着你可以进行函数式编程

在这里插入图片描述

  • 可以在函数内部定义函数,并可以通过return语句将其返回

在这里插入图片描述

  • 下面是两个内置函数,其中print用于打印输出,input用于接收输入

在这里插入图片描述

语句

  • 与条件语句相关的关键字有ifthenelifelse,条件语句也会有返回值

在这里插入图片描述

  • 与循环语句相关的关键字有fortostepwhilethen,同样地,它们也会有返回值,但不同于一般编程语言的是我们将返回一个列表列表的每个元素分别与每次循环的结果一一对应

在这里插入图片描述

在这里插入图片描述

  • 与控制语句相关的关键字有continuebreakreturn,这些语句的用法与C语言相同,因此不再赘述,除此之外return的特殊用法已经在函数中有过说明
  • 多行语句用;\n进行分隔

注释

  • 目前只支持单行注释,在当前行#后的文本将被视为注释

文件

  • 支持以读取文本文件的方式执行代码
  • 源代码文件只要是文本文件即可,对后缀名无要求,但建议以.b为后缀名
  • 缩进与空白对源文件没有影响,但建议采取适当的缩进以使得代码更加易于阅读
  • 使用run这个内置函数来读取源文件并执行

在这里插入图片描述

在这里插入图片描述

我的github

deyuanzou/pybasic: 用python实现的basic解释器 (github.com)

参考

https://github.com/davidcallanan/py-myopl-code

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐