From: Simon Forman Date: Sun, 25 Sep 2022 02:33:29 +0000 (-0700) Subject: Simple REPL. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5e786db63f0d85c30cd7a71a0b988bb502e9e9b5;p=joypy%2FThun.git Simple REPL. Still very crude, and exceptions are not caught, but it works. --- diff --git a/implementations/Ocaml/helloworld/bin/main.ml b/implementations/Ocaml/helloworld/bin/main.ml index 7d624e4..4482306 100644 --- a/implementations/Ocaml/helloworld/bin/main.ml +++ b/implementations/Ocaml/helloworld/bin/main.ml @@ -265,14 +265,35 @@ let d = dict_add d0 "sqr" (text_to_expression "dup mul") (* let expr = text_to_expression "1 2 + 3 4 + 5 6 + 7 8 + 9 10 + 11 + + + + + - " let expr = text_to_expression "1 2 3 4 clear 5" + +https://riptutorial.com/ocaml/example/9450/read-from-standard-input-and-print-to-standard-output *) + +let maybe_read_line () = + try Some(read_line()) + with End_of_file -> None + + +(* let expr = text_to_expression "clear [23] [18] concat 32 ++" let s = text_to_expression "23 [18 99] " let stack, _ = joy s expr d let () = print_endline (expression_to_string stack) -(* print_endline +print_endline (expression_to_string (text_to_expression "1 2 3[4 5 6[7 8]9 10]11[][][[]]")); print_endline (expression_to_string (text_to_expression "true [ false]true")); print_endline (joy_to_string dummy) *) + +let rec main_loop stack dictionary = + match maybe_read_line () with + | Some(line) -> + let expr = text_to_expression line in + let (stack0, dictionary0) = joy stack expr dictionary in + let () = print_endline (expression_to_string stack0) in + main_loop stack0 dictionary0 + | None -> exit 0 + +let () = main_loop [] d +