Exemplo n.º 1
0
 private void CodeNumber(NumberExpression number, List<LocalVariable> locals, List<GlobalVariable> globals, FuncParam[] parameters, ILGenerator il)
 {
     switch (number.Num.Value)
     {
         case 0:
             il.Emit(OpCodes.Ldc_I4_0);
             break;
         case 1:
             il.Emit(OpCodes.Ldc_I4_1);
             break;
         case 2:
             il.Emit(OpCodes.Ldc_I4_2);
             break;
         case 3:
             il.Emit(OpCodes.Ldc_I4_3);
             break;
         case 4:
             il.Emit(OpCodes.Ldc_I4_4);
             break;
         case 5:
             il.Emit(OpCodes.Ldc_I4_5);
             break;
         case 6:
             il.Emit(OpCodes.Ldc_I4_6);
             break;
         case 7:
             il.Emit(OpCodes.Ldc_I4_7);
             break;
         case 8:
             il.Emit(OpCodes.Ldc_I4_8);
             break;
         default:
             il.Emit(OpCodes.Ldc_I4, number.Num.Value);
             break;
     }
 }
Exemplo n.º 2
0
 private Expression SimExpr()
 {
     Expression ex = null;
     if (_la == Terminals.Minus || _la == Terminals.Inv)
     {
         var op = UnaryOp();
         var e = Expr();
         ex = new UnaryExpression(op, e);
     }
     else if (_la == Terminals.LPar)
     {
         Get();
         ex = Expr();
         Expect(Terminals.RPar);
     }
     else if (_la == Terminals.Num)
     {
         var num = _la as Num;
         Get();
         ex = new NumberExpression(num);
     }
     else if (_la == Terminals.Id)
     {
         if (IsAssign())
         {
             ex = Assign();
         }
         else
         {
             ex = Access();
         }
     }
     else SynErr(38);
     return ex;
 }