0
このコードはインターネット上のOCamlの式を評価する方法であり、どのように動作するかを理解しようとしましたが、エディタに入力して実行すると、次のエラーが発生します。OCaml評価関数の構文エラー
type t =
| Integer of int
| Binary of binary * t * t
and binary =
| Add
| Sub
| Mult
| Div
type token =
| INTEGER of int
| ADD
| SUB
| MULT
| DIV
let rec eval = function
| Integer(k) -> k
| Binary(op, a, b) ->
(match op with
| Add -> (+)
| Sub -> (-)
| Mult -> (*)
| Div -> (/)) (eval a) (eval b)
let lexer s =
let open Str in
let split s =
let rec splitchar x l =
if x< 0 then l else splitchar (x-1) (s.[x]:: l) in
splitchar (String.length s -1) []
|> List.map
(function
| "+" -> ADD
| "-" -> SUB
| "*" -> MULT
| "/" -> DIV
| _ -> failwith "lexer: Invalid token: %s");;
文字280-282: | _ - > failwith "レクサー:無効なトークン:%s")); ^^ エラー:構文エラー
エラーメッセージはあまり役に立ちませんし、状況を悪化させるだけの変更をいくつか試してみました。誰でも私が構文エラーが何であるかを理解することによって始めることができますか?