                 self = .parsingError(message: error, range: lexer.index...lexer.index, causes: errors ?? [])
             }
         } else {
-            self = .undefinedError(at: lexer.index, causes: errors ?? [])
+            self = .undefinedError(message: "Undefined error", at: lexer.index, causes: errors ?? [])
         }
     }
     

    /// to provide a `TestError`
    case internalError(cause:Error)
    /// An error where no specific error message has been defined
    case undefinedError(at: String.Index, causes:[Error])
    /// An error during scanning, with a defined message
    case scanningError(message:String,position:String.Index,causes:[Error])
    /// An error during parsing, with a defined message

                return "Internal Error: \(cause.localizedDescription)"
            }
            return "Internal Error"
        case .undefinedError(let message, let position, let causes):
            if causes.isEmpty {
                return "\(message) at \(position.encodedOffset)"
            } else {
                return "\(message) error at \(position.encodedOffset) caused by "+causes.map({"\($0)"}).joined(separator: ", ")
            }
        case .scanningError(let message, let position, let causes):
            if causes.isEmpty{
