|
关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(9) { op = *m_tokens.at(*index).token; (*index)++; } level6(result,index); if (op) if(op=='-') *result=-(*result); } /* process parenthesized expression */ void CExecutable::level6(int *result,int *index) { if ((*m_tokens.at(*index).token == '(') && (m_tokens.at(*index).token_type == DELIMITER)) { (*index)++; level2(result,index); if (*m_tokens.at(*index).token!=')') serror(1); (*index)++; } else primitive(result,index); } /* find value of number or variable */ void CExecutable::primitive(int *result,int *index) { int token_type=m_tokens.at(*index).token_type; if(Isvar(m_tokens.at(*index).token)) token_type=VARIABLE; switch (token_type) { case VARIABLE: find_var(m_tokens.at(*index).token,result); (*index)++; return; case NUMBER: *result = atoi(m_tokens.at(*index).token);
|