|
关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(3) } if( isalpha(*prog)) // 如果是命令COMMAND或是一般标记STRING { int i=0; while(!isdelim(*prog) && *prog!=' ') // 不能是运算符号和空格 { m_token.token[i]=*prog; i++; prog++; } m_token.token[i]='\0'; if(look_up(m_token.token)) // 如果能查到它是命令COMMAND { m_token.token_type=COMMAND; m_token.tok=look_up(m_token.token); } else { m_token.token_type=STRING; } return m_token; } m_token.token_type=NONE; prog++; return m_token; } int CMake::iswhite(char c) { if(c==' 'c=='\t') return 1; else return 0; } int CMake::isdelim(char c) { if( findchar(STRDELIMITER,*prog) >= 0 c==9 c=='\r' c==0) return 1; return 0; } int CMake::findchar(char *str,char ch) { int length=strlen(str); if(length>0) { for(int i=0;i<length;i++) if(str[i]==ch) return i; return -1; } else return -1; } int CMake::look_up(char *c) { if(strcmp(c,"print")==0) return PRINT; if(strcmp(c,"Integer")==0) return INTEGER; if(strcmp(c,"Dim")==0) return DIM; if(strcmp(c,"As")==0) return AS; return 0; } 这是执行代码的CExecutable封装 ////////////////////////////////////////////////// // CExecutable.h //////////////////////////////////////////////// class CintMember { public: char name[64]; int value; }; class CExecutable { public: CExecutable(vector <CToken> tokens);
|