gettoken(void) { int token; skipspaces(); lexeme[1] = 0; if (token = isvar()) return token; if (token = iscte()) return token; if (token = isaddop()) return token; if (token = ismulop()) return token; return lexeme[0] = token = getc(stdin); }
void expression() { if(isaddop(look)) emitLine("xor %rax, %rax"); else term(); while(isaddop(look)) { emitLine("push %rax"); switch(look) { case '+': add(); break; case '-': subtract(); break; default: expected("addop"); break; } } }