 ;;; ParselTongue grammar
 
 (defvar psl-tokens
-  '((expr    . [block defvar deffun number object lambda string
-                true false if while for inc-pre inc-post dec-pre dec-post
-                assign + - == < > print funcall index message pexpr id])
+  '((expr    . [block defvar deffun number object lambda string true false
+                if while for assign assignm inc-pre inc-post dec-pre dec-post
+                + - == < > print funcall index message pexpr id])
     (pexpr     "(" expr ")")
     (defvar    "defvar" id "=" expr "in" expr)
     (deffun    "deffun" id params expr "in" expr)

                            `(let ((,obj-sym (copy-alist ,obj)))
                               (setcdr (assq ,field (cdr ,obj-sym)) ,expr)
                               ,obj-sym)))))))
    (+         . ,(lambda (token op) (psl--apply 'psl-+ (nth 1 op))))
    (-         . ,(lambda (token op) (psl--apply 'psl-- (nth 1 op))))
    (<         . ,(lambda (token op) (psl--apply '< (nth 1 op))))


;;; Known bugs:

;; * Equality tests are incomplete
;; * Semicolon chaining not supported (outside of { } that is)
;; * At least a couple parser issues (max-lisp-eval-depth errors)
