+ (setf *col-no* -1)
+ nil))
+ (defevaluator :normal " +\\n"
+ (constantly "No whitespace at end of line"))
+ (defevaluator :beginning-of-line " *"
+ (lambda () (set-state :beginning-of-symbols)))
+ (defevaluator :beginning-of-line-with-separator " *"
+ (lambda () (set-state :beginning-of-symbols-with-separator)))
+ (defevaluator :beginning-of-symbols "\\n"
+ (lambda ()
+ (if
+ (< 0 *col-no*)
+ "No whitespace only lines"
+ (set-state :beginning-of-line-with-separator))))
+ (defevaluator :beginning-of-symbols ""
+ (lambda ()
+ (if
+ (and (not *form-stack*) (not *form-ended-on-same-line*))
+ "Multiline top level forms must be separated by a space"
+ (set-state :normal))))
+ (defevaluator :beginning-of-symbols-with-separator ""
+ (lambda ()
+ (set-state :normal)))
+ (defevaluator :normal "\\("
+ (lambda ()
+ (push
+ (list *line-no* *col-no*)
+ *form-stack*)