@imc-trading/svlangserver
Version:
A language server for systemverilog
189 lines (188 loc) • 9.43 kB
TypeScript
import { TextDocument } from "vscode-languageserver/node";
import { SystemVerilogSymbol, SystemVerilogSymbolJSON } from "./svsymbol";
import { MacroInfo, PreprocCacheEntry, TokenOrderEntry } from "./svpreprocessor";
declare class ParseToken {
text: string;
scopes: string[];
startTokenIndex: number;
endTokenIndex: number;
}
export declare class SystemVerilogParser {
private _completionGrammarEngine;
private _anonStructUnionCount;
private _anonEnumCount;
private _document;
private _documentPath;
private _preprocCache;
private _fileSymbolsInfo;
private _svtokens;
private _tokenOrder;
private _containerStack;
private _currTokenNum;
private _debugContainerInfo;
private _debugFileInfo;
tokenize(_text: string, includeFilePaths: string[], userDefinesMacroInfo: Map<string, MacroInfo>): [ParseToken[], TokenOrderEntry[], SystemVerilogSymbol[]];
private _getElem;
private _getTokenOrderIndex;
private _getEndPosition;
private _getDefLocations;
private _getDocumentFromTokenOrderIndex;
private _createSymbol;
private _pushSymbol;
private _pushContainerSymbol;
private _notIgnorableScope;
private _nextNonIgnorableScope;
private _printDebugInfo;
private _processTypeReference;
private _processGenericPortList;
private _processParameterPortList;
private _processPortList;
private _processContainerHeader;
private _processPackageHeader;
private _processRoutineHeader;
private _processEndIdentifier;
private _processStartIdentifier;
private _processDimension;
private _processParamPortDeclaration;
private _processRoutineVarDeclaration;
private _processRoutineBody;
private _processRoutine;
private _processParamDeclaration;
private _processModPortDeclaration;
private _processStructUnionMemberList;
private _processStructUnionDeclaration;
private _processEnumList;
private _processEnumDeclaration;
private _processTypeDef;
private _ignoreBlockStatement;
private _ignoreParanthesizedExpression;
private _ignoreTillSemiColon;
private _ignoreTillColon;
private _ignoreActionBlock;
private _ignoreStatement;
private _processPreprocessor;
private _processAttributeInstance;
private _processSimpleKeywords;
private _processPortDeclaration;
private _processParameterOverride;
private _processCheckerDeclaration;
private _processImportExport;
private _processExternConstraintDeclaration;
private _processClassDeclaration;
private _processCoverGroupDeclaration;
private _processPropertyDeclaration;
private _processSequenceDeclaration;
private _processLetDeclaration;
private _processClockingDeclaration;
private _processDefaultDisableItem;
private _processAssertionStatement;
private _processBindDirective;
private _processContinuousAssign;
private _processAlias;
private _processSequentialBlock;
private _processGenerateBlock;
private _processLoopGenerateConstruct;
private _processIfGenerateConstruct;
private _processCaseGenerateConstruct;
private _processEmptyStatement;
private _processNonStandardBeginEndBlock;
private _processExternTFDeclaration;
private _printParsingFailedMessage;
private _processGenerateRegion;
private _processElaborationSystemTask;
private _isDriveStrength;
private _isInstance;
private _processVarInstDeclaration;
private _processModuleCommonItem;
private _processGenerateItem;
private _processSpecifyBlock;
private _processSpecparamDeclaration;
private _processTimeunitsDeclaration;
parse(document: TextDocument, includeFilePaths: string[], preprocCache: Map<string, PreprocCacheEntry>, userDefinesMacroInfo: Map<string, MacroInfo>, _precision?: string, _maxDepth?: number, text?: string): [SystemVerilogParser.SystemVerilogFileSymbolsInfo, string[]];
static preprocCacheToJSON(preprocCache: Map<string, PreprocCacheEntry>): Map<any, any> | (string | (string | TextDocument | import("./svpreprocessor").PreprocIncInfoJSON)[])[][];
static preprocCacheFromJSON(preprocCacheJSON: any): Map<string, PreprocCacheEntry>;
}
export declare namespace SystemVerilogParser {
enum ContainerInfoIndex {
Symbols = 0,
Imports = 1,
Containers = 2,
Exports = 3
}
enum FileInfoIndex {
Containers = 0,
Includes = 1,
Imports = 2,
Exports = 3,
Symbols = 4
}
type SystemVerilogPosition = {
file?: string;
line: number;
character: number;
};
type SystemVerilogSymbolInfo = SystemVerilogSymbol;
type SystemVerilogImportInfo = {
pkg: string;
symbolsText: string[];
};
type SystemVerilogExportInfo = {
pkg: string;
symbolsText: string[];
};
type SystemVerilogIncludeInfo = string;
type SystemVerilogSymbolsInfo = SystemVerilogSymbolInfo[];
type SystemVerilogImportsInfo = SystemVerilogImportInfo[];
type SystemVerilogExportsInfo = SystemVerilogExportInfo[];
type SystemVerilogContainerSymbolsInfo = {
symbolsInfo?: SystemVerilogSymbolsInfo;
importsInfo?: SystemVerilogImportsInfo;
containersInfo?: SystemVerilogContainersInfo;
exportsInfo?: SystemVerilogExportsInfo;
};
type SystemVerilogContainerInfo = {
symbol: SystemVerilogSymbol;
position: SystemVerilogPosition;
info: SystemVerilogContainerSymbolsInfo;
};
type SystemVerilogContainersInfo = SystemVerilogContainerInfo[];
type SystemVerilogIncludesInfo = SystemVerilogIncludeInfo[];
type SystemVerilogFileSymbolsInfo = {
containersInfo?: SystemVerilogContainersInfo;
includesInfo?: SystemVerilogIncludesInfo;
symbolsInfo?: SystemVerilogSymbolsInfo;
importsInfo?: SystemVerilogImportsInfo;
exportsInfo?: SystemVerilogExportsInfo;
};
type SystemVerilogPositionJSON = [number, number] | [string, [number, number]];
type SystemVerilogSymbolInfoJSON = SystemVerilogSymbolJSON;
type SystemVerilogImportInfoJSON = [string, string[]];
type SystemVerilogExportInfoJSON = [string, string[]];
type SystemVerilogImportsInfoJSON = SystemVerilogImportInfoJSON[];
type SystemVerilogExportsInfoJSON = SystemVerilogExportInfoJSON[];
type SystemVerilogSymbolsInfoJSON = SystemVerilogSymbolInfoJSON[];
type SystemVerilogContainerSymbolsInfoJSON = (SystemVerilogSymbolsInfoJSON | SystemVerilogImportsInfoJSON | SystemVerilogContainersInfoJSON | SystemVerilogExportsInfoJSON)[];
type SystemVerilogContainerInfoJSON = [[SystemVerilogSymbolJSON, SystemVerilogPositionJSON], SystemVerilogContainerSymbolsInfoJSON];
type SystemVerilogContainersInfoJSON = SystemVerilogContainerInfoJSON[];
type SystemVerilogFileSymbolsInfoJSON = (SystemVerilogContainersInfoJSON | SystemVerilogIncludesInfo | SystemVerilogSymbolsInfoJSON | SystemVerilogImportsInfoJSON | SystemVerilogExportsInfoJSON)[];
function fileTopSymbols(fileSymbolsInfo: SystemVerilogFileSymbolsInfo, strict?: Boolean): SystemVerilogSymbol[];
function fileContainers(fileSymbolsInfo: SystemVerilogFileSymbolsInfo): SystemVerilogContainersInfo;
function fileAllSymbols(fileSymbolsInfo: SystemVerilogFileSymbolsInfo, strict?: Boolean): SystemVerilogSymbol[];
function containerAllContainers(containerSymbolsInfo: SystemVerilogContainerSymbolsInfo): SystemVerilogSymbol[];
function containerContainers(containerInfo: SystemVerilogContainerInfo): SystemVerilogContainersInfo;
function containerTopSymbols(containerInfo: SystemVerilogContainerInfo): SystemVerilogSymbol[];
function containerAllSymbols(containerInfo: SystemVerilogContainerInfo, topOnly?: boolean): SystemVerilogSymbol[];
function fileAllContainers(fileSymbolsInfo: SystemVerilogFileSymbolsInfo): SystemVerilogSymbol[];
function findFileContainer(fileSymbolsInfo: SystemVerilogFileSymbolsInfo, cntnrName: string): SystemVerilogContainerInfo;
function findContainerSymbol(containerSymbolsInfo: SystemVerilogContainerSymbolsInfo, symbolName: string, findContainer: Boolean): SystemVerilogSymbol | SystemVerilogContainerInfo;
function getInstSymbolsInContainer(containerSymbolsInfo: SystemVerilogContainerSymbolsInfo): SystemVerilogSymbol[];
function findSymbol(fileSymbolsInfo: SystemVerilogFileSymbolsInfo, symbolName: string, findContainer: Boolean): SystemVerilogSymbol | SystemVerilogContainerInfo;
function jsonToPosition(jsonPosition: SystemVerilogParser.SystemVerilogPositionJSON): SystemVerilogPosition;
function jsonToFileSymbolsInfo(file: string, jsonFileSymbolsInfo: SystemVerilogParser.SystemVerilogFileSymbolsInfoJSON): SystemVerilogFileSymbolsInfo;
function fileSymbolsInfoToJson(fileSymbolsInfo: SystemVerilogParser.SystemVerilogFileSymbolsInfo): SystemVerilogFileSymbolsInfoJSON;
function preprocToFileSymbolsInfo(symbols: SystemVerilogSymbol[], includes?: Set<string>): SystemVerilogFileSymbolsInfo;
function containerImports(containerSymbolsInfo: SystemVerilogContainerSymbolsInfo, topOnly?: boolean): SystemVerilogImportsInfo;
function fileAllImports(fileSymbolsInfo: SystemVerilogFileSymbolsInfo): SystemVerilogImportsInfo;
function containerExports(containerSymbolsInfo: SystemVerilogContainerSymbolsInfo): SystemVerilogExportsInfo;
}
export {};