Advertisement
Guest User

LSD - Lab 10 [OK]

a guest
Nov 26th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.06 KB | None | 0 0
  1. type state = In | Out | MaybeIn | MaybeIn2 | MaybeIn3 | MaybeOut | MaybeOut2
  2.  
  3. let delta = function        (* function: state -> char -> state *)
  4.   | In -> (function
  5.              | '-' -> MaybeOut
  6.              | _ -> In)
  7.   | MaybeOut -> (function
  8.     | '-' -> MaybeOut2
  9.     | _ -> In)
  10.   | MaybeOut2 -> (function
  11.     | '>' -> Out
  12.     | _ -> In)
  13.   | Out -> (function
  14.              | '<' -> MaybeIn
  15.              | _ -> Out)
  16.   | MaybeIn -> (function
  17.              | '!' -> MaybeIn2
  18.          | '<' -> MaybeIn
  19.          | _ -> Out)
  20.   | MaybeIn2 -> (function
  21.     | '-' -> MaybeIn3
  22.     | _ -> Out)
  23.   | MaybeIn3 -> (function
  24.     | '-' -> In
  25.     | _ -> Out)
  26.  
  27. let fold_in f =                (* fold f on a character stream with initial value v *)
  28.   let rec fold1 v =        (* that is, compute f (f (f (v c1) c2) c3 ...*)
  29.     (try let c = input_char stdin in
  30.         fun () -> fold1 (f v c)
  31.      with _ -> fun () -> v) ()
  32.   in fold1
  33.  
  34.   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