Files
@ ce98be9707a6
Branch filter:
Location: CSY/reowolf/testdata/parser/positive/14.pdl - annotation
ce98be9707a6
743 B
text/plain
wip on refactoring component
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);
}
}
}
}
|