Order is preserved.
This commit is contained in:
parent
c96cd6e296
commit
0d88895ead
|
|
@ -72,39 +72,37 @@ 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 ->
|
||||
| head :: tail -> (
|
||||
match head with
|
||||
| Right_bracket -> acc, tail
|
||||
| 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 ->
|
||||
(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
|
||||
| "true" -> (joy_true :: el, rest)
|
||||
| "false" -> (joy_false :: el, rest)
|
||||
| _ -> (JoySymbol tok :: el, rest)))
|
||||
|
||||
let foo head tail =
|
||||
match head with
|
||||
| Left_bracket ->
|
||||
let el, rest = expect_right_bracket tail [] in
|
||||
JoyList el, rest
|
||||
(JoyList el, rest)
|
||||
| Right_bracket -> raise (ParseError "Extra closing bracket.")
|
||||
| Token tok ->
|
||||
| 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
|
||||
|
|
@ -115,9 +113,6 @@ let rec parse0 tokens 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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue