【原创】自制编程语言-5 变量的赋值(2)
(看了一下上次更新的日期,6月3日...)
先说一个问题,之前我们对于变量赋值是这样写的:

事实上,也有类似于str = "hello world"类似的语句,这时 "hello world"中有空格,所以不可以这样写,之前写过一个get_string函数,就是用于读入一整行的,我们用它就好了。
我们继续。实际上,变量的赋值语句中,等号的右边还可以是一个表达式。表达式的求值比较复杂,我们先实现最简单的,只包含一个运算符的。例如1+2,3*16。同时,表达式中还可以出现变量,例如a*3,x+y等等。
我们首先需要对getnum函数进行修改。字符串转数字的功能我们就不交给getnum做了,把函数名改为getnum_sub,让这样函数进行字符串转数字,然后表达式求值交给getnum做。
代码中注释应该写得比较清楚了。

首先先对getnum_sub进行修改。如果是变量,返回变量的值。否则返回这个数字。
getnum中,先通过指针p找到运算符的位置。然后把前面和后面的数据分别提取出来,进行计算。我们把p设置为'\0',s后面到p-1就是第一个数,p+1到末尾就是第二个数。
我们执行如下的语句,会发生什么?


什么?停止工作?...啊!原来忘记改成getnum_sub了!

这下正常了。咦?怎么一旦只出现一个数,就又出问题了?


看来如果只有一个数,就找不到运算符,甚至会数组越界。因此,如果没有运算符,只出现一个数要特判。

这下正常了。完,下期再见。
赞 (0)
