Esempio n. 1
0
        private FuncDefinitionAst GetCurrentFunctionAst(ProgramAst programAst, Position position)
        {
            foreach (FuncDefinitionAst ast in programAst.funcDefinitionAsts)
            {
                if (Contains(ast, position))
                {
                    return(ast);
                }
            }

            return(null);
        }
 public void ProcessProgram(ProgramAst programAst)
 {
     foreach (var element in programAst.Elements)
     {
         if (element is DeclarationStatementAst declarationStatement)
         {
             ProcessDeclarationStatement(declarationStatement);
         }
         else if (element is FunctionAst function)
         {
             ProcessFunction(function);
         }
         else
         {
             throw new ArgumentException($"Unknown ast type of one element: {element.GetType()}");
         }
     }
 }
Esempio n. 3
0
 private IEnumerable <CompletionItem> CreateFunctions(ProgramAst ast)
 {
     return(ast.funcDefinitionAsts.Select(e => CreateCompletionItem(e.funcName, CompletionItemKind.Function,
                                                                    $"function {e.funcName}({string.Join(", ", e.args.Select(a => a.VarName))})")));
 }