Files
@ 924de832fc60
Branch filter:
Location: CSY/reowolf/testdata/parser/positive/14.pdl - annotation
924de832fc60
743 B
text/plain
Modify readme
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 fbd1526bae2c | #version 100
composite main(out c) {
channel ao -> ai;
channel bo -> bi;
new sync(ai, bo);
new binary_replicator(bi, ao, c);
}
primitive sync(in a, out b) {
while (true) {
synchronous {
if (fires(a) && fires(b)) {
msg x = get(a);
put(b, x);
} else {
assert !fires(a) && !fires(b);
}
}
}
}
primitive binary_replicator(in b, out a, out c) {
while (true) {
synchronous {
if (fires(b) && fires(a) && fires(c)) {
msg x = get(b);
put(a, x);
put(c, x);
} else {
assert !fires(a) && !fires(b) && !fires(c);
}
}
}
}
|