|
关于Basic程序解释器及编译原理的简单化(2)---C++封装好的Basic解释器(8) { register char op; int hold; level3(result,index); while ((op = *m_tokens.at(*index).token) =='+' op == '-') { (*index)++; level3(&hold,index); arith(op,result,&hold); } } /* multiply or divide two factors */ void CExecutable::level3(int *result,int *index) { register char op; int hold; level4(result,index); while ((op = *m_tokens.at(*index).token) == '*' op == '/' op == '%') { (*index)++; level3(&hold,index); arith(op,result,&hold); } }
/* process integer exponent */ void CExecutable::level4(int *result,int *index) { register char op; int hold; level5(result,index); if ((op = *m_tokens.at(*index).token) == '^') { (*index)++; level5(&hold,index); arith(op,result,&hold); } }
/* is a unary + or - */ void CExecutable::level5(int *result,int *index) { register char op; op = 0; if ((m_tokens.at(*index).token_type==DELIMITER) && *m_tokens.at(*index).token == '+' *m_tokens.at(*index).token == '-' )
|