@@ -28,41 +28,34 @@ const buildDataStructure = <RuleName extends string>(
2828
2929export const buildStruct = < RuleName extends string > (
3030 $ : GrammarSymbols < RuleName > ,
31+ fieldName : string ,
3132 member : Rule ,
32- rest = false ,
33- ) => seq ( '{' , buildDataStructure ( $ , field ( 'member' , member ) , rest ) , '}' )
33+ rest : boolean ,
34+ ) => seq ( '{' , buildDataStructure ( $ , field ( fieldName , member ) , rest ) , '}' )
3435
3536export const buildTuple = < RuleName extends string > (
3637 $ : GrammarSymbols < RuleName > ,
3738 fieldName : string ,
3839 element : Rule ,
39- rest = false ,
40- allowSingle = false ,
41- allowEmpty = true ,
42- ) => {
43- const options : RuleOrLiteral [ ] = [
44- seq (
45- '(' ,
46- buildDataStructure (
47- $ ,
48- field ( fieldName , element ) ,
49- rest ,
50- allowSingle ? commaSep1 : commaSep2 ,
51- ) ,
52- ')' ,
53- ) ,
54- ]
55-
56- if ( allowEmpty ) options . push ( '()' )
57-
58- return choice ( ...options )
59- }
40+ rest : boolean ,
41+ allowSingle : boolean ,
42+ ) => choice ( seq (
43+ '(' ,
44+ buildDataStructure (
45+ $ ,
46+ field ( fieldName , element ) ,
47+ rest ,
48+ allowSingle ? commaSep1 : commaSep2 ,
49+ ) ,
50+ ')' ,
51+ ) , '()' )
6052
6153export const buildList = < RuleName extends string > (
6254 $ : GrammarSymbols < RuleName > ,
55+ fieldName : string ,
6356 element : Rule ,
64- rest = false ,
65- ) => seq ( '[' , buildDataStructure ( $ , field ( 'element' , element ) , rest ) , ']' )
57+ rest : boolean ,
58+ ) => seq ( '[' , buildDataStructure ( $ , field ( fieldName , element ) , rest ) , ']' )
6659
6760export const buildMember = < RuleName extends string > (
6861 $ : GrammarSymbols < RuleName > ,
@@ -91,25 +84,6 @@ export const buildString = <RuleName extends string>(
9184export const buildGenericType = ( name : string , rule : Rule ) =>
9285 seq ( '<' , commaSep1 ( field ( name , rule ) ) , '>' )
9386
94- export const buildTypeConstraint = < RuleName extends string > (
95- $ : GrammarSymbols < RuleName > ,
96- ) =>
97- seq (
98- '<:' ,
99- choice (
100- field ( 'constraint' , $ . _term ) ,
101- seq ( '(' , sep2 ( ';' ) ( field ( 'constraint' , $ . _term ) ) , ')' ) ,
102- ) ,
103- )
104-
105- export const buildTypeDeclaration = < RuleName extends string > (
106- $ : GrammarSymbols < RuleName > ,
107- ) =>
108- seq (
109- field ( 'name' , $ . type ) ,
110- optional ( buildGenericType ( 'parameter' , $ . type_variable_declaration ) ) ,
111- )
112-
11387export const buildBindingPattern = < RuleName extends string > (
11488 $ : GrammarSymbols < RuleName > ,
11589 allowDefaults : boolean ,
0 commit comments