diff --git a/testdata/parser/positive/13.pdl b/testdata/parser/positive/13.pdl new file mode 100644 index 0000000000000000000000000000000000000000..a146785267d8b5ad9a95990187756968d6c969b4 --- /dev/null +++ b/testdata/parser/positive/13.pdl @@ -0,0 +1,42 @@ +#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++]); + } + } +}