Esempio n. 1
0
        public static bool SetupTicForUserFunction(
            UserFunctionDefinitionSyntaxNode userFunctionNode,
            GraphBuilder ticGraph,
            IFunctionDictionary functions,
            IConstantList constants,
            TypeInferenceResultsBuilder results)
        {
            var visitor = new TicSetupVisitor(ticGraph, functions, constants, results, AprioriTypesMap.Empty);

            return(userFunctionNode.Accept(visitor));
        }
Esempio n. 2
0
        private TicSetupVisitor(GraphBuilder ticTypeGraph,
                                IFunctionDictionary dictionary,
                                IConstantList constants,
                                TypeInferenceResultsBuilder resultsBuilder,
                                AprioriTypesMap aprioriTypesMap)
        {
            _aliasScope     = new VariableScopeAliasTable();
            _dictionary     = dictionary;
            _constants      = constants;
            _resultsBuilder = resultsBuilder;
            _ticTypeGraph   = ticTypeGraph;

            foreach (var apriori in aprioriTypesMap)
            {
                _ticTypeGraph.SetVarType(apriori.Key, apriori.Value.ConvertToTiType());
            }
        }
Esempio n. 3
0
        public static bool SetupTicForBody(
            SyntaxTree tree,
            GraphBuilder ticGraph,
            IFunctionDictionary functions,
            IConstantList constants,
            AprioriTypesMap aprioriTypes,
            TypeInferenceResultsBuilder results)
        {
            var visitor = new TicSetupVisitor(ticGraph, functions, constants, results, aprioriTypes);

            foreach (var syntaxNode in tree.Children)
            {
                if (syntaxNode is UserFunctionDefinitionSyntaxNode)
                {
                    continue;
                }

                if (!syntaxNode.Accept(visitor))
                {
                    return(false);
                }
            }
            return(true);
        }