     (for       "for" "(" expr ";" expr ";" expr ")" expr)
 
     ;; Identifiers
-    (id      . "[a-zA-Z<>=+-]+")
+    (id      . "[a-zA-Z<>=]+")
     (ids       id [("," ids) ""])
     (params    "(" ids ")")
 
     ;; Function application
     (funcall   id "(" aexprs ")")
     (aexprs    expr [("," aexprs) ""])
+
+    ;; Operators
+    (inc-pre   "++" id)
+    (inc-post  id "++")
+    (dec-pre   "--" id)
+    (dec-post  id "--")
 
     ;; Objects
     (pairs     pair [("," pairs) ""])

    (for      . ,(lambda (token e)
                   (destructuring-bind (for ps init b1 cond b2 inc pe body) e
                     `(progn ,init (while ,cond ,body ,inc)))))
    (lambda   . ,(lambda (token lm) (cons 'lambda (cdr lm)))))
  "Syntax tree manipulation functions.")

(defun psl--tuck (token names)


(defvar psl-tokens
  '((expr      [block defvar deffun number object lambda funcall string
                true false if while for inc-pre inc-post dec-pre dec-post id])
    (defvar    "defvar" id "=" expr "in" expr)
    (deffun    "deffun" id params expr "in" expr)
    (lambda    "lambda" params expr)
