View difference between Paste ID: ctTLK9Ep and CjRyNGzL
SHOW: | | - or go back to the newest paste.
1
(ql:quickload :smug)
2
(defpackage :dclisp (:use :cl :smug))
3
(in-package :dclisp)
4
5
;;(defvar global-table '(("define" (atom args definiton)                                                                
6
7
(defun sexp ()
8
  (skip-whitespace
9
   (=or (<list>) (<atom>))))
10
11
(defun <list> ()
12
  (=let* ((_ (=char #\())
13
          (contents (skip-whitespace
14
                     (zero-or-more (sexp))))
15
          (_ (=or (=char #\)))))
16
    (result contents)))
17
18
(defun <atom> ()
19
  (text (none-of "() ")))
20
21
(defun parse-input (input)
22-
  (let* ((parsed (funcall (sexp) input)))
22+
  (let* ((parsed (car (funcall (sexp) input))))
23
    (if (equal (cdr parsed) nil)
24
	(car parsed)
25
	(cons (car parsed) (parse-input (cdr parsed))))))