コード例 #1
0
        // 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);
        }