summaryrefslogtreecommitdiff
path: root/main.lisp
blob: 197f1b20b0bc8b6ae2542e942dddff48fe8f05c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(in-package #:monparser)

(defun parse (parser data)
  (let* ((result (funcall parser
                          (make-instance 'parser-input
                                         :data data))))
    (if (parsing-p result)
      (let ((finished? (not (has-data? (parsing-left result)))))
        (values result finished?))
      result)))

(defmethod print-object ((obj failure) stream)
  (multiple-value-bind (line column) (line-and-column (failure-place obj))
    (format stream "~a:~a: ~a~&~a" line column (failure-message obj) (failure-place obj))))