public override ASTNode VisitDaedalusFile([NotNull] DaedalusParser.DaedalusFileContext context) { List <DeclarationNode> definitionNodes = new List <DeclarationNode>(); foreach (IParseTree childContext in context.children) { if (childContext is TerminalNodeImpl) { continue; } if (childContext is DaedalusParser.InlineDefContext inlineDefContext) { ASTNode resultNode = Visit(inlineDefContext.GetChild(0)); if (resultNode is TemporaryNode temporaryNode) { definitionNodes.AddRange(temporaryNode.Nodes); } else { definitionNodes.Add((FunctionDefinitionNode)resultNode); } } else if (childContext is DaedalusParser.BlockDefContext blockDefContext) { definitionNodes.Add((DeclarationNode)Visit(blockDefContext.GetChild(0))); } } return(new FileNode(GetLocation(context), definitionNodes)); }
/// <summary> /// Visit a parse tree produced by <see cref="DaedalusParser.daedalusFile"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitDaedalusFile([NotNull] DaedalusParser.DaedalusFileContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="DaedalusParser.daedalusFile"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitDaedalusFile([NotNull] DaedalusParser.DaedalusFileContext context) { }