UNPKG

greybel-languageserver-core

Version:
68 lines (67 loc) 1.92 kB
import { Lexer } from 'greyscript-core'; import { Token } from 'miniscript-core'; import type { SemanticTokensBuilder, SemanticTokensLegend } from 'vscode-languageserver'; import { IActiveDocument } from '../types'; export type SemanticToken = { line: number; char: number; length: number; tokenType: number; tokenModifiers?: number; }; export declare enum SemanticTokenType { Keyword = 0, String = 1, Number = 2, Variable = 3, Property = 4, Function = 5, Parameter = 6, Operator = 7, Comment = 8, Constant = 9, Punctuator = 10 } export declare enum SemanticTokenModifier { Declaration = 0, Definition = 1, Readonly = 2, Static = 3, Deprecated = 4, Abstract = 5, Async = 6, Modification = 7, Documentation = 8, DefaultLibrary = 9 } export declare const semanticTokensLegend: SemanticTokensLegend; export declare class TokenHandler { token: Token | null; previousToken: Token | null; private _lexer; private _builder; constructor(lexer: Lexer, builder: SemanticTokensBuilder); private next; private isType; private consume; private consumeMany; private processMultilineToken; private processFunction; private processPathSegment; private processFeatureEnvarExpression; private processFeatureInjectExpression; private processFeatureImportStatement; private processFeatureIncludeStatement; private processNativeImportCodeStatement; private processKeyword; private processStringLiteral; private processNumericLiteral; private processBooleanLiteral; private processNilLiteral; private processIdentifier; private processPunctuator; private processComment; private process; digest(): void; } export declare function buildTokens(builder: SemanticTokensBuilder, document: IActiveDocument): SemanticTokensBuilder;