greybel-languageserver-core
Version:
Core functionality of language server for GreyScript
68 lines (67 loc) • 1.92 kB
TypeScript
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;