import Parser from '../index'; import { Token } from './index'; import { AtomToken } from './atom'; import type { AST } from '../base'; import type { ConverterToken, ConverterFlagsToken } from '../internal'; /** * language conversion rule * * 转换规则 * @classdesc `{childNodes: [Token?, AtomToken?, Token]}` */ export declare abstract class ConverterRuleToken extends Token { readonly childNodes: readonly [Token] | readonly [AtomToken, Token] | readonly [Token, AtomToken, Token]; abstract get firstChild(): Token; abstract get lastChild(): Token; abstract get parentNode(): ConverterToken | undefined; abstract get previousSibling(): ConverterFlagsToken | this | undefined; abstract get nextSibling(): this | undefined; abstract get children(): [Token] | [AtomToken, Token] | [Token, AtomToken, Token]; abstract get firstElementChild(): Token; abstract get lastElementChild(): Token; abstract get parentElement(): ConverterToken | undefined; abstract get previousElementSibling(): ConverterFlagsToken | this | undefined; abstract get nextElementSibling(): this | undefined; get type(): 'converter-rule'; /** language variant / 语言变体 */ get variant(): string; set variant(variant: string); /** whether to be unidirectional conversion / 是否是单向转换 */ get unidirectional(): boolean; /** @throws `Error` 不能用于将双向转换或不转换更改为单向转换 */ set unidirectional(flag: boolean); /** whether to be bidirectional conversion / 是否是双向转换 */ get bidirectional(): boolean; /** @throws `Error` 不能用于将双向转换更改为单向转换或将不转换更改为双向转换 */ set bidirectional(flag: boolean); /** * @param rule 转换规则 * @param hasColon 是否带有":" */ constructor(rule: string, hasColon?: boolean, config?: Parser.Config, accum?: Token[]); cloneNode(): this; /** * @override * @param i position of the child node / 移除位置 */ removeAt(i: number): Token; insertAt(): never; /** * Prevent language conversion * * 修改为不转换 */ noConvert(): void; /** * Set the target of language conversion * * 设置转换目标 * @param to target of language conversion / 转换目标 */ setTo(to: string): void; /** * Set the language variant * * 设置语言变体 * @param variant language variant / 语言变体 */ setVariant(variant: string): void; /** * Set the source of language conversion * * 设置转换原文 * @param from source of language conversion / 转换原文 * @throws `Error` 尚未指定语言变体 */ setFrom(from: string): void; /** * Make the language conversion unidirectional * * 修改为单向转换 * @param from source of language conversion / 转换原文 */ makeUnidirectional(from: string): void; /** * Make the language conversion bidirectional * * 修改为双向转换 */ makeBidirectional(): void; }