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)); }
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()); } }
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); }