Exemple #1
0
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;
        }
    }
}