OSDN Git Service

Order is preserved.
authorSimon Forman <sforman@hushmail.com>
Sat, 24 Sep 2022 16:01:16 +0000 (09:01 -0700)
committerSimon Forman <sforman@hushmail.com>
Sat, 24 Sep 2022 16:01:16 +0000 (09:01 -0700)
implementations/Ocaml/helloworld/bin/main.ml

index 0d194a1..bcc6007 100644 (file)
@@ -72,52 +72,47 @@ let rec parse : token list -> joy_list = fun tokens ->
 
 *)
 
-
 (* Get the prefix of the list as joy type and return rest of list*)
 let rec expect_right_bracket tokens acc =
   match tokens with
   | [] -> raise (ParseError "Missing closing bracket.")
-  | head :: tail ->
-  match head with
-    | Right_bracket -> acc, tail
-    | Left_bracket ->
-      (* extract the sub-list *)
-      let sub_list, rest = expect_right_bracket tail [] in
-        (* continue looking for the expected "]" *)
-        let el, rrest = expect_right_bracket rest acc in
-          JoyList sub_list :: el, rrest
-    | Token tok ->
-      let el, rest = expect_right_bracket tail acc in
-      match tok with
-      | "true" -> joy_true :: el, rest
-      | "false"-> joy_false :: el, rest
-      | _ -> (JoySymbol tok) :: el, rest
+  | head :: tail -> (
+      match head with
+      | Right_bracket -> (acc, tail)
+      | Left_bracket ->
+          (* extract the sub-list *)
+          let sub_list, rest = expect_right_bracket tail [] in
+          (* continue looking for the expected "]" *)
+          let el, rrest = expect_right_bracket rest acc in
+          (JoyList sub_list :: el, rrest)
+      | Token tok -> (
+          let el, rest = expect_right_bracket tail acc in
+          match tok with
+          | "true" -> (joy_true :: el, rest)
+          | "false" -> (joy_false :: el, rest)
+          | _ -> (JoySymbol tok :: el, rest)))
 
 let foo head tail =
   match head with
-    | Left_bracket ->
+  | Left_bracket ->
       let el, rest = expect_right_bracket tail [] in
-      JoyList el, rest
-    | Right_bracket -> raise (ParseError "Extra closing bracket.")
-    | Token tok ->
+      (JoyList el, rest)
+  | Right_bracket -> raise (ParseError "Extra closing bracket.")
+  | Token tok -> (
       match tok with
-      | "true" -> joy_true, tail
-      | "false"-> joy_false, tail
-      | _ -> JoySymbol tok, tail
-
+      | "true" -> (joy_true, tail)
+      | "false" -> (joy_false, tail)
+      | _ -> (JoySymbol tok, tail))
 
 let rec parse0 tokens acc =
   match tokens with
   | [] -> acc
   | head :: tail ->
-    let item, rest = foo head tail in 
-    item :: parse0 rest acc
+      let item, rest = foo head tail in
+      item :: parse0 rest acc
 
 let parse : token list -> joy_list = fun tokens -> parse0 tokens []
 
-
-
-
 (*
 
 let text_to_expression str =
@@ -130,8 +125,7 @@ let s = String.concat " " (List.map token_to_string (tokenize "1 Pat [2]3"))
 
 (* let () = print_endline (joy_to_string dummy) *)
 
-
 let () =
-  print_endline (expression_to_string (parse (tokenize "1[2[3]4]5[][][[]]"))) ;
-  print_endline (expression_to_string (parse (tokenize "true [ false]true"))) ;
+  print_endline (expression_to_string (parse (tokenize "1 2 3[4 5 6[7 8]9 10]11[][][[]]")));
+  print_endline (expression_to_string (parse (tokenize "true [ false]true")));
   print_endline (joy_to_string dummy)