【原创】自制编程语言-4 变量的输出
这次我们来输出变量。输出变量需要两个函数,判断字符串是否为变量名,以及根据type来输出变量。
int isvalue(const char *s){
for(int i=0;i<value_ptr;i++){
if(strcmp(value[i].name,s)==0)return 1;
}
return 0;
}
void put_value(const char *name){
for(int i=0;i<value_ptr;i++){
if(strcmp(value[i].name,s)==0){
if(value[i].type==0)printf("%d",value[i].vnum);
else printf("%s",value[i].vstring);
}
}
}
其实仔细一看,也没有很难。都是从0开始,直到value_ptr最后一个结束,判断变量名是否为指定字符串,然后进行比较操作。put_value根据type进行分类输出。
然后是main函数里面的print改写。
if(strcmp(s,"print")==0){//调用print输出
get_string(s);
if(isnumber(s))cout<<s;
else if(s[0]=='\"' && s[strlen(s)-1]=='\"'){
for(int i=1;i<strlen(s)-1;i++){
if(s[i]=='\\' && s[i+1]=='n'){
printf("\n");i++;
}
else printf("%c",s[i]);
}
}
else if(isvalue(s)){
put_value(s);
}
else error();
}
非常简单吧。尝试一下,因为现在还没有赋值,全局变量默认初始化为0,所以如果调用print输出应该会输出0。完。