PreviousUpNext

15.4.849  src/lib/reactive/instruction.pkg

## instruction.pkg

# Compiled by:
#     src/lib/reactive/reactive.lib

# An AST representation of reactive scripts.

package instruction {

    Config X
          = POS_CONFIG  X
          | NEG_CONFIG  X
          | OR_CONFIG   ((Config(X), Config(X)) )
          | AND_CONFIG  ((Config(X), Config(X)) );

    Signal = quickstring__premicrothread::Quickstring;

    Instr X
        = OR   ((Instr(X), Instr(X)) )
        | AND  ((Instr(X), Instr(X)) )
        | NOTHING
        | STOP
        | SUSPEND
        | ACTION  X -> Void
        | EXEC  X -> { stop:  Void -> Void, done:  Void -> Bool }
        | IF_THEN_ELSE  (((X -> Bool), Instr(X), Instr(X)) )
        | REPEAT  ((Int, Instr(X)) )
        | LOOP  Instr(X)
        | CLOSE  Instr(X)
        | SIGNAL  ((Signal, Instr(X)) )
        | REBIND  ((Signal, Signal, Instr(X)) )
        | WHEN  ((Config( Signal ), Instr(X), Instr(X)) )
        | TRAP_WITH  ((Config( Signal ), Instr(X), Instr(X)) )
        | EMIT  Signal
        | AWAIT  Config( Signal );

};


## COPYRIGHT (c) 1997 Bell Labs, Lucent Technologies.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext