X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=wolf;a=blobdiff_plain;f=src%2Fmain%2Fchecker.lisp;h=f20b6a8944fbc96f9d2cf5d8c90aab92ddb15aad;hp=2c42714d771c6a3affa1774944e333d70f7dbf22;hb=1437fe10eb4bcfca53c8c4746fdf68ab37aba0c1;hpb=7b5c585eae313b0c9ae0731a75c1a6f6d4fefde7 diff --git a/src/main/checker.lisp b/src/main/checker.lisp index 2c42714..f20b6a8 100644 --- a/src/main/checker.lisp +++ b/src/main/checker.lisp @@ -11,7 +11,8 @@ ; * in-package must be first line in file unless file is package.lisp ; * No whitespace at end of line ; * No lines that are only whitespace -; - No empty lines at end of file +; * No empty lines at end of file +; * Never have two empty lines in a row ; * Only one in-package per file ; ; Some thoughts @@ -34,6 +35,7 @@ '(:begin ; start of file :normal ; normal processing :beginning-of-line + :beginning-of-separators-with-space ; empty space in there :beginning-of-symbols :all ; matches everything ))) @@ -110,6 +112,10 @@ (defevaluator :begin "\\(in-package[^\\)]*\\)" (lambda () (set-state :normal) nil)) + (defevaluator :beginning-of-separators-with-space :eof + (constantly "Must not end with empty line")) + (defevaluator :beginning-of-separators-with-space "\\n" + (constantly "Must not have two empty lines in a row")) (defevaluator :begin ".*" (constantly "Must begin with in-package form")) (defevaluator :normal "\\( *in-package " @@ -127,8 +133,16 @@ (lambda () (set-state :beginning-of-symbols) nil)) + (defevaluator :beginning-of-separators-with-space " *" + (lambda () + (set-state :beginning-of-symbols) + nil)) (defevaluator :beginning-of-symbols "\\n" - (lambda () (when (< 0 *col-no*) "No whitespace only lines"))) + (lambda () + (if + (< 0 *col-no*) + "No whitespace only lines" + (set-state :beginning-of-separators-with-space)))) (defevaluator :beginning-of-symbols "" (lambda () (set-state :normal)