mirror of
https://github.com/kanaka/mal.git
synced 2024-08-18 02:00:40 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
22 lines
1008 B
Forth
22 lines
1008 B
Forth
module Error
|
|
|
|
exception ReaderError of string
|
|
exception EvalError of string
|
|
exception MalError of Types.Node
|
|
|
|
let expectedXButEOF x = ReaderError(sprintf "Expected %s, got EOF" x)
|
|
let expectedX x = ReaderError(sprintf "Expected %s" x)
|
|
let unexpectedChar () = ReaderError("Unexpected char")
|
|
let invalidToken () = ReaderError("Invalid token")
|
|
|
|
let expectedEvenNodeCount () = EvalError("Expected even node count")
|
|
let wrongArity () = EvalError("Arity: wrong number of arguments")
|
|
let argMismatch () = EvalError("Argument mismatch")
|
|
let symbolNotFound s = EvalError(sprintf "'%s' not found" s)
|
|
let noEnvironment () = EvalError("No environment")
|
|
let tooManyValues () = EvalError("Too many values")
|
|
let notEnoughValues () = EvalError("Not enough values")
|
|
let onlyOneSymbolAfterAmp () = EvalError("only one symbol after &")
|
|
let errExpectedX x = EvalError(sprintf "expected %s" x)
|
|
let indexOutOfBounds () = EvalError("Index out of bounds")
|