Пример #1
0
 /// <summary>
 /// Builds subroutine
 /// </summary>
 /// <param name="subNode">Subroutine node</param>
 /// <param name="subSym">Subroutine symbol</param>
 private void BuildSubroutine(ASTSubStatementNode subNode, UserSubroutine subSym)
 {
     _context = new MethodContext(_codeHolder.GetMethodBuilder(subNode.Name, subSym), subSym.GetLocalsList());
     _emitter = new CodeEmiter(_context.ILGenerator);
     if (subNode.Body != null)
     {
         BuildStatement(subNode.Body);
     }
     else
     {
         _emitter.Nop();
     }
     _emitter.MarkLabel(_context.MethodEnd);
     _emitter.Ret();
     _builtSubs.Add(subNode.Name, _context); //add to built
 }