internal void Function(IList <Tree> trees) { Labels.Reset(); System.Lexical.OpenMethod(trees[1].Content, trees[0].Content, trees[2].Children); VM.Parser.Instruct.Parse(Const.nop).Push(System.Lexical.StreamWriter); this.System.Lexical.EPSInc = System.Lexical.StreamWriter.Offset; Insert(Const.add, null, new Tree("esp", Kind.Register), new Tree(System.Lexical.CurrentMethod.DataSize.ToString(), Kind.Numbre)); for (var j = trees[2].Children.Count - 1; j >= 0; j--) { Insert(Const.pop, Const.empty, trees[2].Children[j].Children[1]); } Compiler(trees[3]); Insert(Const.label, Const.returnLabel, new Tree(Const.returnLabel, Kind.Label)); Insert(Const.sub, null, new Tree("esp", Kind.Register), new Tree(System.Lexical.CurrentMethod.DataSize.ToString(), Kind.Numbre)); VM.Parser.Instruct.Parse(Const.ret).Push(System.Lexical.StreamWriter); VM.Parser.Instruct.Parse(Const.rop).Push(System.Lexical.StreamWriter); System.Lexical.CloseFunction(); }