7#include <unordered_map>
53 void openDocument(
const std::string &uri,
const std::string &text);
54 void changeDocument(
const std::string &uri,
const std::string &newText);
57 std::vector<Diagnostic>
getDiagnostics(
const std::string &uri)
const;
61 std::optional<std::string>
getHover(
const std::string &uri,
size_t line,
size_t column);
63 std::optional<Location>
getDefinition(
const std::string &uri,
size_t line,
size_t column);
66 std::unordered_map<std::string, DocumentState>
documents;
AST::Node * walkForNode(const DocumentState &doc, size_t line, size_t col)
std::optional< Location > getDefinition(const std::string &uri, size_t line, size_t column)
void buildGlobalSymbols(DocumentState &doc)
void openDocument(const std::string &uri, const std::string &text)
void closeDocument(const std::string &uri)
AST::Node * findNodeAtPosition(const std::string &uri, size_t line, size_t column)
void compile(DocumentState &doc)
std::vector< Diagnostic > getDiagnostics(const std::string &uri) const
std::string symbolNameAt(AST::Node *node) const
std::optional< std::string > getHover(const std::string &uri, size_t line, size_t column)
void changeDocument(const std::string &uri, const std::string &newText)
std::unordered_map< std::string, DocumentState > documents
void computeLineOffsets(DocumentState &doc)
The Phasor Programming Language and Runtime.
std::unordered_map< std::string, SymbolInfo > globalSymbols
std::vector< size_t > lineStartOffsets
std::unique_ptr< AST::Program > program
std::vector< Diagnostic > diagnostics