python-archieve-projects/WechatBot/node_modules/cmd-ts/dist/cjs/newparser/parser.d.ts

41 lines
1.3 KiB
TypeScript

import { Token } from './tokenizer';
import type { RegisterOptions } from '../argparser';
export declare type AstNode = Value | LongOption | ShortOption | ShortOptions | PositionalArgument | ForcePositional;
declare type BaseAstNode<Type extends string> = {
type: Type;
index: number;
raw: string;
};
export interface LongOption extends BaseAstNode<'longOption'> {
key: string;
value?: OptionValue;
}
interface Delimiter extends BaseAstNode<'delimiter'> {
}
interface Value extends BaseAstNode<'value'> {
}
interface OptionValue extends BaseAstNode<'optionValue'> {
delimiter: Delimiter;
node: Value;
}
export interface ShortOptions extends BaseAstNode<'shortOptions'> {
options: ShortOption[];
}
export interface ShortOption extends BaseAstNode<'shortOption'> {
key: string;
value?: OptionValue;
}
export interface PositionalArgument extends BaseAstNode<'positionalArgument'> {
}
interface ForcePositional extends BaseAstNode<'forcePositional'> {
type: 'forcePositional';
}
/**
* Create an AST from a token list
*
* @param tokens A token list, coming from `tokenizer.ts`
* @param forceFlag Keys to force as flag. {@see ForceFlag} to read more about it.
*/
export declare function parse(tokens: Token[], forceFlag: RegisterOptions): AstNode[];
export {};