// program - returns (functions, generic_functions, type_definitions) public new(List <FunctionNode>, List <FunctionNode>, List <TypeDefinitionNode>) VisitProgram([NotNull] functionalParser.ProgramContext context) { var funcs = new List <FunctionNode>(); var genericfuncs = new List <FunctionNode>(); var aliases = new List <TypeDefinitionNode>(); foreach (var d in context.definition()) { var def = Visit(d); if (def is null) { continue; // Maat directives } else if (def is FunctionNode fdef) { if (fdef.IsGeneric) { genericfuncs.Add(fdef); } else { funcs.Add(fdef); } } else if (def is TypeDefinitionNode tdef) { aliases.Add(tdef); typeTable.Insert(tdef.Name, tdef.ActualType, tdef.FileAndLine); } } return(funcs, genericfuncs, aliases); }