plum

#treesitter#compiler#wasm

git clone https://git.pyrossh.dev/plum

A statically typed, imperative programming language inspired by rust, python


2645871 — Peter John 2026-11-04T22:53:05+05:30
grammar: delete fun_star corpus (generators removed; T6)
plum-tooling/tree-sitter-plum/test/corpus/fun_star.txt DELETED
@@ -1,267 +0,0 @@
1
- ================================================================================
2
- fun* with a yield type and result
3
- ================================================================================
4
-
5
- fun* filter(xs: List[T]) *T -> List[T] =
6
- out := List()
7
- for x := range xs
8
- if yield x
9
- out.push(x)
10
- out
11
-
12
- --------------------------------------------------------------------------------
13
-
14
- (source
15
- (fn
16
- (fn_identifier)
17
- (param
18
- (var_identifier)
19
- (type
20
- (type_identifier)
21
- (type
22
- (generic))))
23
- (yield_type
24
- (type
25
- (generic)))
26
- (type
27
- (type_identifier)
28
- (type
29
- (generic)))
30
- (body
31
- (assign
32
- (var_identifier)
33
- (expression
34
- (primary_expression
35
- (class_call
36
- (type_identifier)
37
- (class_argument_list)))))
38
- (for
39
- (var_identifier)
40
- (expression
41
- (primary_expression
42
- (var_identifier)))
43
- (body
44
- (if
45
- (yield_expression
46
- (expression
47
- (primary_expression
48
- (var_identifier))))
49
- (body
50
- (expression
51
- (primary_expression
52
- (attribute
53
- (primary_expression
54
- (var_identifier))
55
- (fn_identifier)
56
- (fn_argument_list
57
- (expression
58
- (primary_expression
59
- (var_identifier)))))))))))
60
- (expression
61
- (primary_expression
62
- (var_identifier))))))
63
-
64
- ================================================================================
65
- fun* with a two-value yield type
66
- ================================================================================
67
-
68
- fun* zip(xs: List[A], ys: List[B]) *(A, B) =
69
- i := 0
70
- while i < 3
71
- yield xs.at(i), ys.at(i)
72
- i = i + 1
73
-
74
- --------------------------------------------------------------------------------
75
-
76
- (source
77
- (fn
78
- (fn_identifier)
79
- (param
80
- (var_identifier)
81
- (type
82
- (type_identifier)
83
- (type
84
- (generic))))
85
- (param
86
- (var_identifier)
87
- (type
88
- (type_identifier)
89
- (type
90
- (generic))))
91
- (yield_type
92
- (type
93
- (generic))
94
- (type
95
- (generic)))
96
- (body
97
- (assign
98
- (var_identifier)
99
- (expression
100
- (primary_expression
101
- (integer))))
102
- (while
103
- (expression
104
- (comparison_operator
105
- (primary_expression
106
- (var_identifier))
107
- (primary_expression
108
- (integer))))
109
- (body
110
- (yield_expression
111
- (expression
112
- (primary_expression
113
- (attribute
114
- (primary_expression
115
- (var_identifier))
116
- (fn_identifier)
117
- (fn_argument_list
118
- (expression
119
- (primary_expression
120
- (var_identifier)))))))
121
- (expression
122
- (primary_expression
123
- (attribute
124
- (primary_expression
125
- (var_identifier))
126
- (fn_identifier)
127
- (fn_argument_list
128
- (expression
129
- (primary_expression
130
- (var_identifier))))))))
131
- (assign
132
- (var_identifier)
133
- (expression
134
- (primary_expression
135
- (binary_operator
136
- (primary_expression
137
- (var_identifier))
138
- (primary_expression
139
- (integer)))))))))))
140
-
141
- ================================================================================
142
- yield as an assignment value
143
- ================================================================================
144
-
145
- fun* fold(init: A, xs: List[T]) *(A, T) -> A =
146
- acc := init
147
- for x := range xs
148
- acc = yield acc, x
149
- acc
150
-
151
- --------------------------------------------------------------------------------
152
-
153
- (source
154
- (fn
155
- (fn_identifier)
156
- (param
157
- (var_identifier)
158
- (type
159
- (generic)))
160
- (param
161
- (var_identifier)
162
- (type
163
- (type_identifier)
164
- (type
165
- (generic))))
166
- (yield_type
167
- (type
168
- (generic))
169
- (type
170
- (generic)))
171
- (type
172
- (generic))
173
- (body
174
- (assign
175
- (var_identifier)
176
- (expression
177
- (primary_expression
178
- (var_identifier))))
179
- (for
180
- (var_identifier)
181
- (expression
182
- (primary_expression
183
- (var_identifier)))
184
- (body
185
- (assign
186
- (var_identifier)
187
- (yield_expression
188
- (expression
189
- (primary_expression
190
- (var_identifier)))
191
- (expression
192
- (primary_expression
193
- (var_identifier)))))))
194
- (expression
195
- (primary_expression
196
- (var_identifier))))))
197
-
198
- ================================================================================
199
- for as the value of an assignment
200
- ================================================================================
201
-
202
- fun main() =
203
- alive := for u := range filter(units)
204
- u.hp
205
-
206
- --------------------------------------------------------------------------------
207
-
208
- (source
209
- (fn
210
- (fn_identifier)
211
- (body
212
- (assign
213
- (var_identifier)
214
- (for
215
- (var_identifier)
216
- (expression
217
- (primary_expression
218
- (fn_call
219
- (var_identifier)
220
- (fn_argument_list
221
- (expression
222
- (primary_expression
223
- (var_identifier)))))))
224
- (body
225
- (expression
226
- (primary_expression
227
- (attribute
228
- (primary_expression
229
- (var_identifier))
230
- (fn_identifier))))))))))
231
-
232
- ================================================================================
233
- fun* with a sequence parameter
234
- ================================================================================
235
-
236
- fun* take(n: Int, src: *T) *T =
237
- for x := range src
238
- yield x
239
-
240
- --------------------------------------------------------------------------------
241
-
242
- (source
243
- (fn
244
- (fn_identifier)
245
- (param
246
- (var_identifier)
247
- (type
248
- (type_identifier)))
249
- (param
250
- (var_identifier)
251
- (seq_type
252
- (type
253
- (generic))))
254
- (yield_type
255
- (type
256
- (generic)))
257
- (body
258
- (for
259
- (var_identifier)
260
- (expression
261
- (primary_expression
262
- (var_identifier)))
263
- (body
264
- (yield_expression
265
- (expression
266
- (primary_expression
267
- (var_identifier)))))))))