Formatting.

This commit is contained in:
Simon Forman 2022-09-23 17:47:31 -07:00
parent f45d070856
commit 97f715a10d
1 changed files with 16 additions and 24 deletions

View File

@ -23,43 +23,36 @@ let rec joy_to_string jt =
and expression_to_string el = String.concat " " (List.map joy_to_string el) and expression_to_string el = String.concat " " (List.map joy_to_string el)
type token = Left_bracket | Right_bracket | Token of string
let delimiter str last =
type token = last >= String.length str || String.contains "[] " (String.get str last)
| Left_bracket
| Right_bracket
| Token of string
let delimiter ch = String.contains "[] " ch
(* string -> int -> int -> token * int *) (* string -> int -> int -> token * int *)
let rec tokenize1 str start last = let rec tokenize1 str start last =
if last >= String.length str || delimiter (String.get str last) if delimiter str last then (Token (String.sub str start (last - start)), last)
then (Token (String.sub str start (last - start)), last)
else tokenize1 str start (last + 1) else tokenize1 str start (last + 1)
let rec tokenize0 str start acc = let rec tokenize0 str start acc =
if start >= String.length str if start >= String.length str then acc
then acc
else else
let ch = String.get str start in let ch = String.get str start in
match ch with match ch with
| '[' -> Left_bracket :: (tokenize0 str (start + 1) acc) | '[' -> Left_bracket :: tokenize0 str (start + 1) acc
| ']' -> Right_bracket :: (tokenize0 str (start + 1) acc) | ']' -> Right_bracket :: tokenize0 str (start + 1) acc
| ' ' -> tokenize0 str (start + 1) acc | ' ' -> tokenize0 str (start + 1) acc
| _ -> let (token, n) = tokenize1 str start (start + 1) in | _ ->
token :: (tokenize0 str n acc) let token, n = tokenize1 str start (start + 1) in
token :: tokenize0 str n acc
let tokenize str = tokenize0 str 0 [] let tokenize str = tokenize0 str 0 []
let token_to_string token = let token_to_string token =
match token with match token with
| Left_bracket -> "[" | Left_bracket -> "["
| Right_bracket -> "]" | Right_bracket -> "]"
| Token str -> str | Token str -> str
(* (*
let char_tok ch acc = let char_tok ch acc =
match ch with match ch with
@ -86,9 +79,8 @@ let s = String.concat "" (List.map token_to_string (text_to_expression "1 [2]3"
(* let () = print_endline (joy_to_string dummy) *) (* let () = print_endline (joy_to_string dummy) *)
let s = String.concat " " (List.map token_to_string (tokenize "1 [2]3" )) let s = String.concat " " (List.map token_to_string (tokenize "1 [2]3"))
let () =
let () = print_endline s;
print_endline s ; print_endline (joy_to_string dummy)
print_endline (joy_to_string dummy)