Skip to content
Snippets Groups Projects
Commit 3e754a51 authored by Taddeüs Kroes's avatar Taddeüs Kroes
Browse files

Better errors for unmatching parentheses

parent 23418c16
No related branches found
No related tags found
No related merge requests found
......@@ -19,9 +19,9 @@ let tokenize next_char emit =
in
let emit_buf () =
match Buffer.length buf with
| 0 -> ()
| _ ->
if Buffer.length buf = 0 then
()
else
emit (ID (Buffer.contents buf));
Buffer.clear buf
in
......@@ -74,6 +74,9 @@ let parse next_char =
| MINUS -> expect := E_ntest
| LPAREN -> stack := ref [] :: !stack
| RPAREN ->
if List.length !stack < 2 then begin
raise (ParseError "too many closing parentheses")
end;
let body = List.rev !(List.hd !stack) in
stack := List.tl !stack;
append (Repeat (program_of_list body))
......@@ -89,6 +92,10 @@ let parse next_char =
expect := E_basic
in
tokenize next_char handler;
if List.length !stack > 1 then
raise (ParseError "missing closing parenthesis");
Concat (List.rev !(List.hd !stack))
let parse_string s =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment