@@ -63,9 +63,9 @@ keyword -> 'module' | 'sum' | 'prod' | 'record'
63
63
| 'qualified' | 'as'
64
64
modulename -> uppercamelcase
65
65
longmodulename -> long modulename
66
- tyname -> uppercamelcase
66
+ typename -> uppercamelcase
67
67
fieldname -> lowercamelcase\keyword
68
- longtyname -> long tyname
68
+ longtypename -> long typename
69
69
varname -> lowers\keyword
70
70
punctuation -> '<=' | ',' | '(' | ')' | '{' | '}'
71
71
| ':' | ':-' | '=' | '|'
@@ -108,7 +108,7 @@ Imports bring *entities* (types and classes) of other modules into scope.
108
108
109
109
``` text
110
110
import -> 'import' [ 'qualified' ] longmodulename [ 'as' longmodulename ] [ importspec ]
111
- importspec -> '(' [ { tyname ',' } tyname [','] ] ')'
111
+ importspec -> '(' [ { typename ',' } typename [','] ] ')'
112
112
```
113
113
114
114
If ` importspec ` is omitted, then all entities specified in the module are imported; otherwise only the specified entities are imported.
@@ -135,10 +135,10 @@ typedef -> prodtypedef | sumtypedef | recordtypedef | opaquetypedef
135
135
A product type definition defines a new product type.
136
136
137
137
``` text
138
- prodtypedef -> 'prod' tyname { varname } '=' prod
139
- prod -> { tyexpr }
140
- tyexpr -> varname
141
- | longtyname
138
+ prodtypedef -> 'prod' typename { varname } '=' prod
139
+ prod -> { typeexp }
140
+ typeexp -> varname
141
+ | longtypename
142
142
| '(' prod ')'
143
143
```
144
144
@@ -148,9 +148,9 @@ Product type definitions instruct the code generator to generate a product type
148
148
A sum type definition defines a new sum type.
149
149
150
150
``` text
151
- sumtypedef -> 'sum' tyname { varname } '=' sum
151
+ sumtypedef -> 'sum' typename { varname } '=' sum
152
152
sum -> sumconstructor { '|' sumconstructor }
153
- sumconstructor -> tyname prod
153
+ sumconstructor -> typename prod
154
154
```
155
155
156
156
Sum type definitions instruct the code generator to generate a sum type for the target language.
@@ -159,18 +159,18 @@ Sum type definitions instruct the code generator to generate a sum type for the
159
159
A record type definition defines a new record type.
160
160
161
161
``` text
162
- recordtypedef -> 'record' tyname { varname } '=' record
162
+ recordtypedef -> 'record' typename { varname } '=' record
163
163
record -> '{' [ field { ',' field } ] '}'
164
164
field -> fieldname ':' prod
165
165
````
166
166
167
167
Record type definitions instruct the code generator to generate a record type for the target language.
168
168
169
- ##### Opaque type
169
+ ##### Opaque type definition
170
170
An opaque type definition defines a new opaque type.
171
171
172
172
```text
173
- opaquetypedef -> 'opaque' tyname { varname }
173
+ opaquetypedef -> 'opaque' typename { varname }
174
174
```
175
175
176
176
Opaque type definitions do not instruct the code generator to generate code, and an opaque type must be instead implemented in the target language.
@@ -194,7 +194,7 @@ An instance clause specifies a type is an instance of a class.
194
194
195
195
``` text
196
196
instanceclause -> 'instance' constraint [ ':-' constraintexps ]
197
- constraint -> classref { tyexpr }
197
+ constraint -> classref { typeexp }
198
198
```
199
199
200
200
Instance clauses do not instruct the code generator to generate code, but
@@ -218,7 +218,7 @@ The summarized productions of a LambdaBuffers file is as follows.
218
218
module -> 'module' longmodulename { import } { statement }
219
219
220
220
import -> 'import' [ 'qualified' ] longmodulename [ 'as' longmodulename ] [ importspec ]
221
- importspec -> '(' [ { tyname ',' } tyname [','] ] ')'
221
+ importspec -> '(' [ { typename ',' } typename [','] ] ')'
222
222
223
223
statement -> typedef
224
224
| classdef
@@ -227,29 +227,29 @@ statement -> typedef
227
227
228
228
typedef -> prodtypedef | sumtypedef | recordtypedef | opaquetypedef
229
229
230
- prodtypedef -> 'prod' tyname { varname } '=' prod
231
- prod -> { tyexpr }
232
- tyexpr -> varname
233
- | longtyname
230
+ prodtypedef -> 'prod' typename { varname } '=' prod
231
+ prod -> { typeexp }
232
+ typeexp -> varname
233
+ | longtypename
234
234
| '(' prod ')'
235
235
236
- sumtypedef -> 'sum' tyname { varname } '=' sum
236
+ sumtypedef -> 'sum' typename { varname } '=' sum
237
237
sum -> sumconstructor { '|' sumconstructor }
238
- sumconstructor -> tyname prod
238
+ sumconstructor -> typename prod
239
239
240
- recordtypedef -> 'record' tyname { varname } '=' record
240
+ recordtypedef -> 'record' typename { varname } '=' record
241
241
record -> '{' [ field { ',' field } ] '}'
242
242
field -> fieldname ':' prod
243
243
244
- opaquetypedef -> 'opaque' tyname { varname }
244
+ opaquetypedef -> 'opaque' typename { varname }
245
245
246
246
classdef -> 'class' [ constraintexps '<=' ] classname { varname }
247
247
constraintexp -> classref { varname }
248
248
| '(' constraintexps ')'
249
249
constraintexps -> [ constraintexp { ',' constraintexp } ]
250
250
251
251
instanceclause -> 'instance' constraint [ ':-' constraintexps ]
252
- constraint -> classref { tyexpr }
252
+ constraint -> classref { typeexp }
253
253
254
254
deriveclause -> 'derive' constraint
255
255
```
0 commit comments