public ParseModule Parse(string?filePath, IEnumerable <Token> tokens, IList <ParseError> errors) { _filePath = filePath; _tokens.Clear(); _tokens.AddRange(tokens); TokenSource tokenSource = new TokenSource(_tokens, 0, errors); ParseModule outputModule = new ParseModule(); _symbolMap = outputModule.SymbolMap; ParseModuleHopper hopper = new ParseModuleHopper(outputModule); while (tokenSource.Peek().Type != TokenType.None) { ParseTopLevelStatement(ref tokenSource)?.AcceptTopLevelVisitor(hopper); } return(outputModule); }