public override void ExitSubStatement([NotNull] CmanParser.SubStatementContext context) { ASTSubStatementNode procNode; ASTBodyStatementNode bodyNode = null; if (_nodes.Peek() is ASTBodyStatementNode) { bodyNode = (ASTBodyStatementNode)_nodes.Pop(); } if (_nodes.Peek() is ASTArgListNode argListNode) { _nodes.Pop(); procNode = (ASTSubStatementNode)_nodes.Pop(); procNode.ArgList = argListNode; } else { procNode = (ASTSubStatementNode)_nodes.Pop(); } if (bodyNode != null) { procNode.Body = bodyNode; } var compileUnitNode = (ASTCompileUnitNode)_nodes.Peek(); compileUnitNode.AddProcedure(procNode); }
public override void EnterSubStatement([NotNull] CmanParser.SubStatementContext context) { _nodes.Push(new ASTSubStatementNode(context, (ASTCompileUnitNode)_nodes.Peek())); }