关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(2) strcpy(prog,Prog);}
CMake::~CMake(){ }
CToken CMake::get_token(void) { register char *temp; CToken m_token; m_token.token_type=0; m_token.tok=0; temp=m_token.token; if(*prog=='\0') { *m_token.token='\0'; m_token.tok=0; m_token.token_type=FINISHED; return m_token; } while(iswhite(*prog)) ++prog; if(*prog=='\r') // 如果是换行符 { m_token.token[0]=*prog; m_token.token[1]='\0'; m_token.token_type=ENTER; prog++; return m_token; } if( isdelim(*prog)) // 如果找得到运算符号标记 { *m_token.token=*prog; *(m_token.token+1)='\0'; m_token.tok=0; m_token.token_type=DELIMITER; prog++; return m_token; // 譬如 token[0]='+' token[1]='\0'; }
if(*prog=='"') // 如果是字符串 { prog++; int i=0; while(*prog!='"' && *prog!='\r') { m_token.token[i]=*prog; i++; prog++; } prog++; m_token.token[i]='\0'; m_token.token_type=QUOTE; return m_token; }
if( isdigit(*prog)) // 如果找到数字标记 { int i=0; while(isdigit(*prog) && i<TOKEN_MAX) // 小于token最长为80个字符 { m_token.token[i]=*prog; i++; prog++; } m_token.token[i]='\0'; m_token.token_type=NUMBER; return m_token;