+ (defevaluator :normal "\\("
+ (lambda ()
+ (push (list *line-no* *col-no*) *form-stack*)
+ (set-state :first-symbol)))
+ (defevaluator :first-symbol "\\("
+ (lambda ()
+ (cond
+ ((and (not *form-stack*) (not (zerop *col-no*))) "Top level forms must begin on first column")
+ ((and *form-stack* (/= (1+ (cadr (car *form-stack*))) *col-no*))
+ "All form elements must be indented equally")
+ (t
+ (push (list *line-no* *col-no*) *form-stack*)
+ (set-state :first-symbol)))))