UNPKG

cbml

Version:
118 lines (117 loc) 1.92 kB
/** * 语法树节点<!--{en}CBMLTree AST nodes are represented as Node objects--> */ export interface Node { /** * 节点类型 */ type: string; /** * 节点在代码中的范围 */ range?: [number, number]; /** * 节点在源码中的位置 */ loc?: SourceLocation | null; } /** * 源码位置信息 */ export interface SourceLocation { /** * 源码部分 */ source: string | null; /** * 起始位置 */ start: Position; /** * 结束位置 */ end: Position; } /** * 代码位置 */ export interface Position { /** * 行号 */ line: number; /** * 列号 */ column: number; } /** * 代码块所用语言 */ export declare type Language = 'xml' | 'c' | 'pascal' | 'python' | 'lua' | 'cbml'; /** * 属性 */ export interface Attribute { /** * 属性值 */ value: string; /** * 引号风格 */ quoted: string | '' | '"' | "'"; } /** * 属性集合 */ export interface Attributes { [name: string]: Attribute; } /** * 基础元素 */ export interface Element extends Node { tag: string; attributes: Attributes; language: Language; } /** * 容器元素 */ export interface ContainerElement extends Element { body: Node[]; } /** * CBML 根元素 */ export interface CBMLElement extends ContainerElement { tag: '#cbml'; language: 'cbml'; type: 'CBMLElement'; } /** * 复合元素 */ export interface BlockElement extends ContainerElement { type: 'BlockElement'; } /** * 复合注释元素 */ export interface CommentElement extends ContainerElement { type: 'CommentElement'; } /** * 单体元素 */ export interface VoidElement extends Element { type: 'VoidElement'; } /** * 文本元素 */ export interface TextNode extends Node { type: 'TextNode'; content: string; }