【原创】自制编程语言-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)

相关推荐

  • C语言程序设计——21世纪高等院校计算机系列课程教材

    目录: 第1章  C语言概述 1.1 C语言的发展历史 1.2 为什么要使用C语言 1.3 C语言程序范例及其结构特点 1.4 C语言程序的开发过程 本章小结 第2章  数据类型 2.1 数据类型的分 ...

  • 【原创】自制编程语言-5 变量的赋值(1)

    首先我们先看这个函数: void put_value(const char *name){ for(int i=0;i<value_ptr;i++){ if(strcmp(value[i].na ...

  • 【原创】自制编程语言-3 变量定义

    这一次,我们来尝试制作变量.变量是基本上所有编程语言都有的功能.为了编辑起来方便,这里我制作的编程语言就必须先声明再使用,否则在赋值语句的时候可能会很麻烦. 定义变量的语句,每一个编程语言都是有不同的 ...

  • 【原创】自制编程语言-4 变量的输出

    这次我们来输出变量.输出变量需要两个函数,判断字符串是否为变量名,以及根据type来输出变量. int isvalue(const char *s){ for(int i=0;i<value_p ...

  • 【原创】自制编程语言-1 最小编程语言

    一开始,不要想的太难,从最简单的开始,一点一点添加功能,到最后,你就会发现,结果就很像是一个完整的编程语言了. 首先,我们先抛开一切问题,先说说如何对这个编程语言进行编译或是解释.用编译型的语言实在是 ...

  • 【原创】自制编程语言-2 添加新功能

    现在我们可以添加一些新功能了.首先,我们现在的print无法输出换行,所以,我们需要增加一个转义字符\n来进行换行. else if(s[0]=='\"' && s[strl ...

  • 【原创】自制编程语言-6 输入语句

    现在我们的编程语言功能越来越多了,干劲也更足了,趁着这势头,我们继续写下去吧.这次我们来尝试编写输入语句.有了一个功能,加上运算符,我们就可以实现A+B问题了,真不错.输入语句的样式用很多,例如: C ...

  • 【原创】自制编程语言-7 注释&if语句初步

    这次我们尝试制作注释的功能.注释是几乎所有编程语言都有的功能.不同语言的注释符号也不尽相同.汇编语言的注释符号为":".C++的注释符号为"//".PYTHON ...

  • 【原创】自制编程语言-8 if语句

    隔了几天,我们继续.上次说的get_string的问题,暂时放在一边,我们到时候会专门开一章做修改的. 今天我们的目标是if语句,这还是有点难度的,尤其是嵌套if语句,现在笔者已经不知道怎么去做了.算 ...

  • 【原创】自制编程语言-9 嵌套if语句(1)

    今天我们继续if语句的制作.在开始之前,我们先来分析一下. 我们可以用一个变量存放当前if的值.如果当前if为0,我们不执行任何东西,直到endif使得当前if为1.事实上,如果是嵌套的if,我们同样 ...