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 } }; }