// <math_term>       ::= <math_signed_factor> [<mult_op> <math_signed_factor>]*
void Term(CPU *cpu, Files file){
    SignedFactor(cpu, file);
    while(IsMultOp(file)){
        cpu->PushValue();
        MultOp(cpu, file);
    }
}
void Term() {
  SignedFactor();
  while(Look == '*' || Look == '/') {
    EmitLn("push rax");
    switch(Look) {
    case '*' : Multiply();break;
    case '/' : Divide();break;
    }
  }
}
void MultOp(CPU *cpu, Files file){
    switch(Peek()){
        case '*':
            Match('*', file);
            SignedFactor(cpu, file);
            cpu->PopValue();
            cpu->Multiply();
            return;
        case '/':
            Match('/', file);
            SignedFactor(cpu, file);
            cpu->PopValue();
            cpu->Divide();
            return;
        case '%':
            Match('%', file);
            SignedFactor(cpu, file);
            cpu->PopValue();
            cpu->Modulo();
            return;
        default:
        Expected("Multiplication Operation", file);
    }
}
void Term()
{
    SignedFactor();
    while (strchr("*/", Look)) {
        EmitLn("pushl %eax");
        switch(Look)
        {
            case '*':
                Multiply();
                break;
            case '/':
                Divide();
                break;
            default:
                Expected("Mulop");
        }
    }
}
void FirstTerm()
{
    SignedFactor();
    Term1();
}