3h-ast
Version:
A simple AST generator.
70 lines (69 loc) • 1.87 kB
TypeScript
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;