Esempio n. 1
0
void Expression(){
   if (IsAddop(Look[0]))
      EmitLn("CLR D0");
   else
      Term();
   EmitLn("MOVE D0,D1");
   while (IsAddop(Look[0])){
      switch (Look[0]){
         case '+': Add();
	    break;
         case '-': Subtract();
	    break;
         default:
            Expected("Addop");
      }
   }
}
Esempio n. 2
0
void Expression() {
  Term();
  while(IsAddop(Look)) {
    EmitLn("push rax");
    switch(Look) {
      case '+': Add(); break;
      case '-': Subtract(); break;
    }
  }
}
Esempio n. 3
0
void Expression() {
  FirstTerm();
  NewLine();
  while(IsAddop(Look)) {
    Push();
    switch(Look) {
      case '+': Add(); break;
      case '-': Subtract(); break;
    }
    NewLine();
  }
}
Esempio n. 4
0
void Expression()
{
    if (IsAddop(Token)) {
        Clear();
    } else {
        Term();
    }

    while(IsAddop(Token)) {
        Push();
        switch(Token) {
            case '+':
                Add();
                break;
            case '-':
                Subtract();
                break;
            default:
                break;
        }
    }
}
Esempio n. 5
0
/* parse and tranlate an expression
 * vestigial version */
char Expression()
{
    char type;
    if (IsAddop(Look)) {
        type = Unop();
    } else {
        type = Term();
    }

    while(IsAddop(Look)) {
        Push(type);
        switch (Look) {
            case '+':
                type = Add(type);
                break;
            case '-':
                type = Subtract(type);
                break;
            default:
                break;
        }
    }
    return type;
}
Esempio n. 6
0
void Expression()
{
    FirstTerm();
    while(IsAddop(Look)) {
        EmitLn("pushl %eax");
        switch (Look) {
            case '+':
                Add();
                break;
            case '-':
                Subtract();
                break;
            default:
                Expected("Addop");
        }
    }
}
Esempio n. 7
0
void Factor()
{

    if(Look == '(') {

        Match('(');
        Expression();
        Match(')');
     } else if(IsAddop(Look)) {

        Match('-');
        sprintf(tmp,"movl $%c, %%eax", GetNum());
        EmitLn(tmp);
        EmitLn("negl %eax");

    } else {

        sprintf(tmp,"movl $%c, %%eax", GetNum());
        EmitLn(tmp);
    }
}
Esempio n. 8
0
void Expression()
{
    if(IsAddop(Look))
        EmitLn("xor %eax, %eax");
    else
        Term();

    while (strchr("+-", Look)) {

        EmitLn("pushl %eax");

        switch(Look)
        {
            case '+':
                Add();
                break;
            case '-':
                Substract();
                break;
            default:
                Expected("Addop");
        }
    }
}