Example #1
0
        public void EmitIncLocalVar(LocalVariableInfo localVariableInfo, IncDecOperators @operator)
        {
            switch (@operator)
            {
            case IncDecOperators.PostInc:
                ilGenerator.Emit(OpCodes.Dup);
                ilGenerator.Emit(OpCodes.Ldc_I4_1);
                ilGenerator.Emit(OpCodes.Add);
                ilGenerator.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case IncDecOperators.PostDec:
                ilGenerator.Emit(OpCodes.Dup);
                ilGenerator.Emit(OpCodes.Ldc_I4_1);
                ilGenerator.Emit(OpCodes.Sub);
                ilGenerator.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case IncDecOperators.PreInc:
                ilGenerator.Emit(OpCodes.Ldc_I4_1);
                ilGenerator.Emit(OpCodes.Add);
                ilGenerator.Emit(OpCodes.Dup);
                ilGenerator.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;

            case IncDecOperators.PreDec:
                ilGenerator.Emit(OpCodes.Ldc_I4_1);
                ilGenerator.Emit(OpCodes.Sub);
                ilGenerator.Emit(OpCodes.Dup);
                ilGenerator.Emit(OpCodes.Stloc, (LocalBuilder)localVariableInfo);
                break;
            }
        }
 public Glossary()
 {
     ReservedWords = OtherReservedWords.Union(Types)
                     .Union(Conditions).Union(Cycles).ToList();
     UnaryOperators = IncDecOperators.Union(UnaryBinary).Union(new List <string> {
         "!", "~"
     }).ToList();
     Operators =
         BinaryOperatorsByPriority.Union(UnaryOperators).Union(AssignationOperators).ToList();
     Operators.Remove("?");
     Operators.Remove(".");
     ConsiderAsUnary    = UnaryOperators.Union(Types).ToList();
     Brackets           = OpeningBrackets.Select(b => b + ClosingBrackets[OpeningBrackets.IndexOf(b)]).ToList();
     LexemesOfTokenType = new Dictionary <TokenType, List <string> >
     {
         { TokenType.OpeningBracket, OpeningBrackets },
         { TokenType.ClosingBracket, ClosingBrackets },
         { TokenType.Punctuation, Punctuation },
         { TokenType.ReservedWord, ReservedWords },
         { TokenType.Operator, Operators },
         { TokenType.Quote, Quotes }
     };
 }