Files
@ 5dea649b3ffd
Branch filter:
Location: CSY/reowolf/testdata/parser/positive/13.pdl - annotation
5dea649b3ffd
662 B
text/plain
Initial pass of dead code removal
1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 | #version 100
/*
Adaptation of 7.pdl
*/
composite main() {}
composite example(in[] a, in[] b, out x) {
new async(a);
new async(b);
new resolve(a, b, x);
}
primitive resolve(in[] a, in[] b, out x) {
while (true) {
synchronous {
int i = 0;
while (i < a.length && i < b.length) {
if (fires(a[i]) && fires(b[i])) {
put(x, create(0)); // send token to x
break;
}
i++;
}
if (i >= a.length || i >= b.length)
assert !fires(x);
}
}
}
primitive async(in[] a) {
while (true) {
synchronous {
int i = 0;
while (i < a.length)
if (fires(a[i++])) break;
while (i < a.length)
assert !fires(a[i++]);
}
}
}
|