UNPKG

3h-ast

Version:
70 lines (69 loc) 1.87 kB
import { TokenizeOptions } from './tokenize'; export declare type ASTNodeTemplate<T, U> = { type: T; offset: number; line: number; column: number; } & U; /** dts2md break */ export declare type GlobNode = ASTNodeTemplate<'glob', { value: string; }>; /** dts2md break */ export declare type NumberNode = ASTNodeTemplate<'number', { value: string; suffix: string; }>; /** dts2md break */ export declare type WordNode = ASTNodeTemplate<'word', { value: string; }>; /** dts2md break */ export declare type SymbolNode = ASTNodeTemplate<'symbol', { value: string; }>; /** dts2md break */ export declare type SpanNode = ASTNodeTemplate<'span', { start: string; stop: string; body: readonly ASTNode[]; }>; /** dts2md break */ export declare type ASTNode = GlobNode | NumberNode | WordNode | SymbolNode | SpanNode; /** dts2md break */ export interface ASTOptions extends TokenizeOptions { spanSymbols: Map<string, string>; escapeCharacters: Map<string, string>; } /** dts2md break */ /** * Default span symbols: * '(' -> ')' * '[' -> ']' * '{' -> '}' */ export declare const astDefaults: ASTOptions; /** dts2md break */ export interface ASTResult { /** * The result of the AST parsing */ ast: readonly ASTNode[]; /** * The character offset of the upcoming character */ stopOffset: number; /** * The line number of the last line */ stopLine: number; /** * The number of the last column */ stopColumn: number; } /** dts2md break */ /** * Convert tokens to AST nodes */ export declare const token2ast: (tokens: string[], options?: Partial<ASTOptions> | undefined, initOffset?: number, initLine?: number, initColumn?: number, cursorStart?: number, cursorStop?: number) => ASTResult;