public void FuncCallStart(string funcName) { DatSymbol symbol = GetSymbolByName(funcName); List <DatSymbolType> parametersTypes = new List <DatSymbolType>(); for (int i = 1; i <= symbol.ParametersCount; ++i) { DatSymbol parameter = Symbols[symbol.Index + i]; parametersTypes.Add(parameter.Type); } AssemblyInstruction instruction; if (symbol.Flags.HasFlag(DatSymbolFlag.External)) { instruction = new CallExternal(symbol); } else { instruction = new Call(symbol); } FuncCallCtx = new FuncCallContext(_activeContext, FuncCallCtx, parametersTypes, symbol); _activeContext = FuncCallCtx; _activeContext.SetEndInstruction(instruction); IsInsideArgList = true; }
public void ExitOperator(string operatorText, bool twoArg = true) { var instruction = AssemblyBuilderHelpers.GetInstructionForOperator(operatorText, twoArg); _activeContext.SetEndInstruction(instruction); }