Merge pull request #2189 from tree-sitter/fix-dsl-d
fix(dsl): add support for rule refs to externals in `dsl.d.ts`
This commit is contained in:
commit
2869cdc60b
1 changed files with 21 additions and 21 deletions
42
cli/npm/dsl.d.ts
vendored
42
cli/npm/dsl.d.ts
vendored
|
|
@ -1,19 +1,19 @@
|
|||
type AliasRule = {type: 'ALIAS'; named: boolean; content: Rule; value: string};
|
||||
type BlankRule = {type: 'BLANK'};
|
||||
type ChoiceRule = {type: 'CHOICE'; members: Rule[]};
|
||||
type FieldRule = {type: 'FIELD'; name: string; content: Rule};
|
||||
type ImmediateTokenRule = {type: 'IMMEDIATE_TOKEN'; content: Rule};
|
||||
type PatternRule = {type: 'PATTERN'; value: string};
|
||||
type PrecDynamicRule = {type: 'PREC_DYNAMIC'; content: Rule; value: number};
|
||||
type PrecLeftRule = {type: 'PREC_LEFT'; content: Rule; value: number};
|
||||
type PrecRightRule = {type: 'PREC_RIGHT'; content: Rule; value: number};
|
||||
type PrecRule = {type: 'PREC'; content: Rule; value: number};
|
||||
type Repeat1Rule = {type: 'REPEAT1'; content: Rule};
|
||||
type RepeatRule = {type: 'REPEAT'; content: Rule};
|
||||
type SeqRule = {type: 'SEQ'; members: Rule[]};
|
||||
type StringRule = {type: 'STRING'; value: string};
|
||||
type SymbolRule<Name extends string> = {type: 'SYMBOL'; name: Name};
|
||||
type TokenRule = {type: 'TOKEN'; content: Rule};
|
||||
type AliasRule = { type: 'ALIAS'; named: boolean; content: Rule; value: string };
|
||||
type BlankRule = { type: 'BLANK' };
|
||||
type ChoiceRule = { type: 'CHOICE'; members: Rule[] };
|
||||
type FieldRule = { type: 'FIELD'; name: string; content: Rule };
|
||||
type ImmediateTokenRule = { type: 'IMMEDIATE_TOKEN'; content: Rule };
|
||||
type PatternRule = { type: 'PATTERN'; value: string };
|
||||
type PrecDynamicRule = { type: 'PREC_DYNAMIC'; content: Rule; value: number };
|
||||
type PrecLeftRule = { type: 'PREC_LEFT'; content: Rule; value: number };
|
||||
type PrecRightRule = { type: 'PREC_RIGHT'; content: Rule; value: number };
|
||||
type PrecRule = { type: 'PREC'; content: Rule; value: number };
|
||||
type Repeat1Rule = { type: 'REPEAT1'; content: Rule };
|
||||
type RepeatRule = { type: 'REPEAT'; content: Rule };
|
||||
type SeqRule = { type: 'SEQ'; members: Rule[] };
|
||||
type StringRule = { type: 'STRING'; value: string };
|
||||
type SymbolRule<Name extends string> = { type: 'SYMBOL'; name: Name };
|
||||
type TokenRule = { type: 'TOKEN'; content: Rule };
|
||||
|
||||
type Rule =
|
||||
| AliasRule
|
||||
|
|
@ -48,8 +48,8 @@ type RuleBuilders<
|
|||
RuleName extends string,
|
||||
BaseGrammarRuleName extends string
|
||||
> = {
|
||||
[name in RuleName]: RuleBuilder<RuleName | BaseGrammarRuleName>;
|
||||
};
|
||||
[name in RuleName]: RuleBuilder<RuleName | BaseGrammarRuleName>;
|
||||
};
|
||||
|
||||
interface Grammar<
|
||||
RuleName extends string,
|
||||
|
|
@ -102,7 +102,7 @@ interface Grammar<
|
|||
externals?: (
|
||||
$: Record<string, SymbolRule<string>>,
|
||||
previous: Rule[],
|
||||
) => SymbolRule<string>[];
|
||||
) => (SymbolRule<string> | RegExp | string)[];
|
||||
|
||||
/**
|
||||
* An array of tokens that may appear anywhere in the language. This
|
||||
|
|
@ -153,8 +153,8 @@ interface Grammar<
|
|||
|
||||
type GrammarSchema<RuleName extends string> = {
|
||||
[K in keyof Grammar<RuleName>]: K extends 'rules'
|
||||
? Record<RuleName, Rule>
|
||||
: Grammar<RuleName>[K];
|
||||
? Record<RuleName, Rule>
|
||||
: Grammar<RuleName>[K];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue