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