Files @ 17fe648a8934
Branch filter:

Location: CSY/reowolf/testdata/parser/positive/2.pdl

MH
Partial reimplementation of compiler and TypeTable

Every type symbol and its possible polymorphic variables are now
parsed up front and put in the SymbolTable, doing away with the
complicated and error-prone NamespacedIdentifier. Still pending
changes to parts of the compiler and the runtime, so not working
at the moment.
#version 100

import std.reo;

composite main(in asend, out arecv, in bsend, out brecv, in csend, out crecv) {
    channel xo -> xi;
    channel yo -> yi;
    channel zo -> zi;
    // Every synchronous round, at most one message is sent (to determine a global order)
    new mymerger(asend, bsend, xo);
    new mymerger(csend, xi, yo);
    // If a message is sent, it is broadcast to every recipient
    new replicator(yi, {arecv, zo});
    new replicator(zi, {brecv, crecv});
}

primitive mymerger(in a, in b, out c) {
    while (true) {
        synchronous {
            if (fires(a) && !fires(b) && fires(c)) {
                put(c, get(a));
            } else if (!fires(a) && fires(b) && fires(c)) {
                put(c, get(b));
            } else {
            	assert !fires(a) && !fires(b) && !fires(c);
            }
        }
    }
}