Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type state = In | Out | MaybeIn | MaybeIn2 | MaybeIn3 | MaybeOut | MaybeOut2
- let delta = function (* function: state -> char -> state *)
- | In -> (function
- | '-' -> MaybeOut
- | _ -> In)
- | MaybeOut -> (function
- | '-' -> MaybeOut2
- | _ -> In)
- | MaybeOut2 -> (function
- | '>' -> Out
- | _ -> In)
- | Out -> (function
- | '<' -> MaybeIn
- | _ -> Out)
- | MaybeIn -> (function
- | '!' -> MaybeIn2
- | '<' -> MaybeIn
- | _ -> Out)
- | MaybeIn2 -> (function
- | '-' -> MaybeIn3
- | _ -> Out)
- | MaybeIn3 -> (function
- | '-' -> In
- | _ -> Out)
- let fold_in f = (* fold f on a character stream with initial value v *)
- let rec fold1 v = (* that is, compute f (f (f (v c1) c2) c3 ...*)
- (try let c = input_char stdin in
- fun () -> fold1 (f v c)
- with _ -> fun () -> v) ()
- in fold1
- let _ = let rez = fold_in delta Out in prerr_endline (if rez <> Out && rez <> MaybeOut && rez<>MaybeOut2 then "ends in comment" else "OK")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement