TreeNode * expres(void) { TreeNode * t = simple_exp(); if ((token==LT)||(token==EQ)) { TreeNode * p = newExpNode(OpK); if (p!=NULL) { p->child[0] = t; p->attr.op = token; t = p; } match(token); if (t!=NULL) t->child[1] = simple_exp(); } return t; }
TreeNode* expression(void) { TreeNode* t = simple_exp(); if (s_token == LT || s_token == EQ ) { TreeNode* p = newExpNode(OpK); if (p != NULL) { p->child[0] = t; p->attr.op = s_token; t = p; } match(s_token); // TODO: This is equal to getToken(). why get a new token at here ? if (t != NULL); t->child[1] = simple_exp(); } return t; }
void exp(int level) { int this_line = line_cnt; int isAssign = 0; list<line>::iterator look_var; look_var = tokenPos; if(look_var->tokenType == ID) { look_var++; if(strcmp(look_var->textOfLine,"[")==0) { while(1) { look_var ++; if(strcmp(look_var->textOfLine,"]")==0) { isAssign = 1; look_var++; break; } else if(look_var->tokenType == ENDF) { break; } } } else { isAssign = 1; } //look_var++; if(strcmp(look_var->textOfLine,"=")==0 && isAssign == 1) { pTreeType[this_line][0] = ASSIGN; pTreeType[this_line][1] = level; push_child(this_line,VAR); var(level+1); push(EQUAL, this_line); push_child(this_line,EXP); exp(level+2); } else { push_child(this_line,EXP); simple_exp(level); } } else { push_child(this_line,EXP); simple_exp(level); } }