关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(6) int result; Ai_GetNextValue(&result,INTEGER,index); printf("%d",result); return; } default: printf("\n"); return; } } printf("\n"); }
void CExecutable::Run_Dim(int *index) file://~~{ int i=*index; if(i<m_tokens.size()-1)//~~ if(m_tokens.at(i+1).token_type==STRING) { if(i<m_tokens.size()-3) file://如果下面还应该有 变量名,As,类型 三个tokens { CintMember member; if(m_tokens.at(i+2).token_type==COMMAND && m_tokens.at(i+2).tok==AS) file://如果接下来的token是As { if(m_tokens.at(i+3).token_type==COMMAND)//接下来是变量类型 switch(m_tokens.at(i+3).tok) file://看看是什么变量类型 { case INTEGER: // 如果是Integer类型 strcpy(member.name,m_tokens.at(i+1).token); member.value=0; m_intArray.push_back(member); *index+=3; // 将m_tokens里的指针跳3个 break; default: break; } } } }}
void CExecutable::Run_Assignment(int *index) file://index必须指到'='的token{ int var_type=Isvar(m_tokens.at(*index - 1).token);