diff --git a/src/symbols.ts b/src/symbols.ts new file mode 100644 index 0000000..fe79739 --- /dev/null +++ b/src/symbols.ts @@ -0,0 +1,53 @@ +export interface Symbols { + definitions: ClueSymbolDefinition[]; + uses: ClueSymbolUse[]; + diagnostics: ClueDiagnostic[]; +} + +export interface ClueDiagnostic { + level: ClueDiagnosticLevel; + message: string; + location: Range; +} + +export type ClueDiagnosticLevel = +| 'WARNING' +| 'ERROR'; + +export interface ClueSymbolDefinition { + id: number; + token: string; + value: string | null; + location: Range; + kind: ClueSymbolKind; + modifiers: ClueSymbolModifier[]; +} + +export interface ClueSymbolUse { + definitionId: number | null; + location: Range; +} + +export type ClueSymbolKind = +| 'VARIABLE' +| 'FUNCTION' +| 'PSEUDO' +| 'ENUM' +| 'CONSTANT' +| 'MACRO' +| 'ARGUMENT'; + +export type ClueSymbolModifier = +| 'LOCAL' +| 'GLOBAL' +| 'STATIC'; + +export interface Range { + start: Position; + end: Position; +} + +export interface Position { + line: number; + character: number; +}