consumer_cps_worker.tri (973B)
1 !import "consumers.lowerings.cps-worker" C 2 !import "consumers.structural" S 3 !import "prelude" !Local 4 simple = S.makeConsumer t [(S.makeRule (S.patCapture 0) S.patAny (S.outStem (S.outCapture 0)))] 5 compiled = C.compile simple 6 main = matchBool "cps-worker-ok" "cps-worker-DIFFER" (foldl and? true 7 [(equal? (S.runConsumer simple 12) (bindResult compiled (program _ : C.runChecked program 12))) 8 (equal? (C.compile (S.makeConsumer t [(S.makeRule S.patAny S.patAny (S.outCapture 1))])) (err "unknown capture" t)) 9 (equal? (C.compile (S.makeConsumer t [(S.makeRule S.patAny S.patAny (S.outBecome (S.outLiteral t) (S.outLiteral t) (S.outLiteral t)))])) (err "unsupported output form in CPS worker" t)) 10 (equal? (C.compile (S.makeConsumer t [(S.makeRule S.patAny S.patAny 11 (S.outMatch (S.outLiteral true) 12 [(pair S.patLeaf (S.outLiteral 7)) 13 (pair (S.patStem S.patLeaf) (S.outCapture 99))]))])) 14 (err "unsupported output form in CPS worker" t))]) 15 main