【原创】自制编程语言-3 变量定义
这一次,我们来尝试制作变量。变量是基本上所有编程语言都有的功能。为了编辑起来方便,这里我制作的编程语言就必须先声明再使用,否则在赋值语句的时候可能会很麻烦。
定义变量的语句,每一个编程语言都是有不同的方式的。例如,C语言的变量定义方式是:
int N;
char ch;
而Visual Basic的声明则如下:
Dim i as integer
为了方便起见,就做一个类似于Visual Basic式样的声明语句吧。
首先,为了方便保存变量的值,我们先创建一个结构体。为了不和变量名重名,结构体的名字用大写,这是我的个人习惯。当然,首字母大写也可以,看个人喜好。
struct VALUE{
char name[30];//变量名
int type;//类型,0表示int,1表示string
int vnum;//int类型的数值
char vstring[255];//string类型
};
struct VALUE value[1000];
这样,如果要定义变量,直接根据dim后面的类型和变量名放入即可。当然,我们还需要定义一个存放变量信息的数组。叫做value,一共1000个位子。
同时,我们在main里面放入变量的声明。
else if(strcmp(s,"dim")==0){//声明变量
char sa[255],sb[255],sc[255];
get_word(sa);get_word(sb);get_word(sc);
if(strcmp(sb,"as")!=0)error();
strcpy(value[value_ptr].name,sa);
if(strcmp(sc,"int")==0)value[value_ptr].type=0;
else if(strcmp(sc,"string")==0)value[value_ptr].type=1;
else error();
}
dim a as int这一句,a放入sa字符串,表示变量名,as放入sb字符串,是一个连接词,如果sb不为as则报错。int放入sc,说明变量类型。
value_ptr是一个下标,指向数组目前的最后一个元素。为了记录目前value数组存放到了哪一个位置,需要用一个变量指向value存放到了哪一个位置。到了最后,value_ptr要++,为了下一次存放下一个元素。
完成。至于变量的输出,下一节再说。