Skip to content

Commit 77d9591

Browse files
committed
feat(parse): parse matrix domains, indexing, and slicing
Parse matrix domains, domain lettings, indexing, and slicing. Matrix literals will be parsed in a future PR.
1 parent 26e99b4 commit 77d9591

13 files changed

+1879
-48
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
enable_native_parser=false
2+
solve_with_minion=false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
$ parse test: 1d matrix with indexed elements
2+
3+
language ESSENCE' 1.0
4+
5+
find a: matrix indexed by [int(1..5)] of bool
6+
7+
such that
8+
a[1] = true,
9+
a[2] = true,
10+
a[3] = true,
11+
a[4] = true,
12+
a[5] = !a[4]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,368 @@
1+
{
2+
"constraints": {
3+
"Root": [
4+
{
5+
"clean": false,
6+
"etype": null
7+
},
8+
[
9+
{
10+
"Eq": [
11+
{
12+
"clean": false,
13+
"etype": null
14+
},
15+
{
16+
"UnsafeIndex": [
17+
{
18+
"clean": false,
19+
"etype": null
20+
},
21+
{
22+
"Atomic": [
23+
{
24+
"clean": false,
25+
"etype": null
26+
},
27+
{
28+
"Reference": {
29+
"UserName": "a"
30+
}
31+
}
32+
]
33+
},
34+
[
35+
{
36+
"Atomic": [
37+
{
38+
"clean": false,
39+
"etype": null
40+
},
41+
{
42+
"Literal": {
43+
"Int": 1
44+
}
45+
}
46+
]
47+
}
48+
]
49+
]
50+
},
51+
{
52+
"Atomic": [
53+
{
54+
"clean": false,
55+
"etype": null
56+
},
57+
{
58+
"Literal": {
59+
"Bool": true
60+
}
61+
}
62+
]
63+
}
64+
]
65+
},
66+
{
67+
"Eq": [
68+
{
69+
"clean": false,
70+
"etype": null
71+
},
72+
{
73+
"UnsafeIndex": [
74+
{
75+
"clean": false,
76+
"etype": null
77+
},
78+
{
79+
"Atomic": [
80+
{
81+
"clean": false,
82+
"etype": null
83+
},
84+
{
85+
"Reference": {
86+
"UserName": "a"
87+
}
88+
}
89+
]
90+
},
91+
[
92+
{
93+
"Atomic": [
94+
{
95+
"clean": false,
96+
"etype": null
97+
},
98+
{
99+
"Literal": {
100+
"Int": 2
101+
}
102+
}
103+
]
104+
}
105+
]
106+
]
107+
},
108+
{
109+
"Atomic": [
110+
{
111+
"clean": false,
112+
"etype": null
113+
},
114+
{
115+
"Literal": {
116+
"Bool": true
117+
}
118+
}
119+
]
120+
}
121+
]
122+
},
123+
{
124+
"Eq": [
125+
{
126+
"clean": false,
127+
"etype": null
128+
},
129+
{
130+
"UnsafeIndex": [
131+
{
132+
"clean": false,
133+
"etype": null
134+
},
135+
{
136+
"Atomic": [
137+
{
138+
"clean": false,
139+
"etype": null
140+
},
141+
{
142+
"Reference": {
143+
"UserName": "a"
144+
}
145+
}
146+
]
147+
},
148+
[
149+
{
150+
"Atomic": [
151+
{
152+
"clean": false,
153+
"etype": null
154+
},
155+
{
156+
"Literal": {
157+
"Int": 3
158+
}
159+
}
160+
]
161+
}
162+
]
163+
]
164+
},
165+
{
166+
"Atomic": [
167+
{
168+
"clean": false,
169+
"etype": null
170+
},
171+
{
172+
"Literal": {
173+
"Bool": true
174+
}
175+
}
176+
]
177+
}
178+
]
179+
},
180+
{
181+
"Eq": [
182+
{
183+
"clean": false,
184+
"etype": null
185+
},
186+
{
187+
"UnsafeIndex": [
188+
{
189+
"clean": false,
190+
"etype": null
191+
},
192+
{
193+
"Atomic": [
194+
{
195+
"clean": false,
196+
"etype": null
197+
},
198+
{
199+
"Reference": {
200+
"UserName": "a"
201+
}
202+
}
203+
]
204+
},
205+
[
206+
{
207+
"Atomic": [
208+
{
209+
"clean": false,
210+
"etype": null
211+
},
212+
{
213+
"Literal": {
214+
"Int": 4
215+
}
216+
}
217+
]
218+
}
219+
]
220+
]
221+
},
222+
{
223+
"Atomic": [
224+
{
225+
"clean": false,
226+
"etype": null
227+
},
228+
{
229+
"Literal": {
230+
"Bool": true
231+
}
232+
}
233+
]
234+
}
235+
]
236+
},
237+
{
238+
"Eq": [
239+
{
240+
"clean": false,
241+
"etype": null
242+
},
243+
{
244+
"UnsafeIndex": [
245+
{
246+
"clean": false,
247+
"etype": null
248+
},
249+
{
250+
"Atomic": [
251+
{
252+
"clean": false,
253+
"etype": null
254+
},
255+
{
256+
"Reference": {
257+
"UserName": "a"
258+
}
259+
}
260+
]
261+
},
262+
[
263+
{
264+
"Atomic": [
265+
{
266+
"clean": false,
267+
"etype": null
268+
},
269+
{
270+
"Literal": {
271+
"Int": 5
272+
}
273+
}
274+
]
275+
}
276+
]
277+
]
278+
},
279+
{
280+
"Not": [
281+
{
282+
"clean": false,
283+
"etype": null
284+
},
285+
{
286+
"UnsafeIndex": [
287+
{
288+
"clean": false,
289+
"etype": null
290+
},
291+
{
292+
"Atomic": [
293+
{
294+
"clean": false,
295+
"etype": null
296+
},
297+
{
298+
"Reference": {
299+
"UserName": "a"
300+
}
301+
}
302+
]
303+
},
304+
[
305+
{
306+
"Atomic": [
307+
{
308+
"clean": false,
309+
"etype": null
310+
},
311+
{
312+
"Literal": {
313+
"Int": 4
314+
}
315+
}
316+
]
317+
}
318+
]
319+
]
320+
}
321+
]
322+
}
323+
]
324+
}
325+
]
326+
]
327+
},
328+
"dominance": null,
329+
"symbols": {
330+
"id": 0,
331+
"next_machine_name": 0,
332+
"parent": null,
333+
"table": [
334+
[
335+
{
336+
"UserName": "a"
337+
},
338+
{
339+
"id": 91,
340+
"kind": {
341+
"DecisionVariable": {
342+
"domain": {
343+
"DomainMatrix": [
344+
"BoolDomain",
345+
[
346+
{
347+
"IntDomain": [
348+
{
349+
"Bounded": [
350+
1,
351+
5
352+
]
353+
}
354+
]
355+
}
356+
]
357+
]
358+
}
359+
}
360+
},
361+
"name": {
362+
"UserName": "a"
363+
}
364+
}
365+
]
366+
]
367+
}
368+
}

0 commit comments

Comments
 (0)