diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/dcl/parser.ml | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/dcl/parser.ml b/lib/dcl/parser.ml index a7981c0..3caf748 100644 --- a/lib/dcl/parser.ml +++ b/lib/dcl/parser.ml @@ -1,7 +1,13 @@ type error = ParseError of string let of_string s = - match Sexplib.Sexp.of_string s |> Ast.statement_of_sexp with + (* ppx_sexp_conv encodes no-argument variants as bare atoms, so + unwrap a single-element list (e.g. (GetHead)) → atom (GetHead). *) + let sexp = match Sexplib.Sexp.of_string s with + | Sexplib.Sexp.List [atom] -> atom + | other -> other + in + match Ast.statement_of_sexp sexp with | stmt -> Ok stmt | exception exn -> Error (ParseError (Printexc.to_string exn)) |
