自己动手写basic解释器 二

               

自己动手写basic解释器

刺猬@http://blog.csdn.net/littlehedgehog

 





注: 文章basic解释源码摘自梁肇新先生的《编程高手箴言》(据他所说这个代码也是网上摘录的),源码解读参考《java编程艺术》。《java编程艺术》里面自然是java版了(可能旭哥更加适合点儿),我这里还是解读的C版basic解释器代码。

上次我们把程序装载入内存,这里我们开始做词法分析了。hoho~ 开始 

一开始我们先再来回顾下:当我们的解释器在执行时,每次读入一条语句,并且根据这条语句执行特定的操作;然后再读入下一条语句,依此执行下去。也就是说解释器执行时,每次从程序的源代码中读入一个标识符。如果读入的是关键字,解释器就按照该关键字的要求执行规定的操作。举例来说,当解释器读入一个 PRINT后,它将打印PRINT之后的字符;当读入一个GOSUB时,它就执行指定的子程序。在到达程序的结尾之前,这个过程将反复进行。
按照上面的分析,我们所做的第一步就是要读取标识符,要一个单词一个数字的区分,比如print要作为一个关键字读入,2345要作为一个数字读入,而a=3这里要作为三个标识符读入,分别是变量a、赋值符号=以及数值3。看来我们在读取标识符时,我们还需要给标识符分类。

  1. #define DELIMITER 1  //分界符 比如逗号 分号 等号 都属于这之列
  2. #define VARIABLE 2   //变量
  3. #define NUMBER 3     //数字
  4. #define COMMAND 4    //关键字(命令)
  5. #define STRING 5     //字符串(这个比较特殊 既包括关键字 又包括常量字符串)
  6. #define QUOTE 6      //常量字符串 比如"hello world"
这里仔细谈分类收获不大,待看了get_token 这个取标识符的函数之后我们就大致明白为什么要这样分了。 token主要目的就是读取当前的标识符,放入token字符数组中,并确定标识符类型,放入token_type中,如果是关键字,那么我们还需要处理tok,标记为相应关键字。
  1. /* get a token 
  2.  * 从basic源码中读取一个符号(token) 并且区分出符号类型
  3.  * 我们把获取的符号放在token字符数组里面 在token_type中设置符号类型 在tok中设置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值