Add check for long forms
authorFrank Duncan <frank@kank.net>
Sat, 11 Jul 2015 17:03:52 +0000 (12:03 -0500)
committerFrank Duncan <frank@kank.net>
Sat, 11 Jul 2015 17:03:52 +0000 (12:03 -0500)
resources/longform.lisp [new file with mode: 0644]
src/main/checker.lisp

diff --git a/resources/longform.lisp b/resources/longform.lisp
new file mode 100644 (file)
index 0000000..e21062c
--- /dev/null
@@ -0,0 +1,118 @@
+(in-package #:nothing)
+
+(progn
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%"))))
+ (progn
+  (with-open-file (str "increasinglylongfilenamesfailme.dat" :direction :input :if-does-not-exist :create)
+   (when
+    (read-line str)
+    (format t "This file had some things in int, yay!~%")))))
index 2ccf7f427cf40e50160b6a75020b8ede83bd3a75..b369a1bb5a07f84e066d501aedf28a37107404e7 100644 (file)
@@ -2,7 +2,7 @@
 
 ; Rules
 ; - Elements in each form must be indented the same amount
-; - No form longer than 50 lines
+; * No form longer than 50 lines
 ; - Top level multiline forms must be separated by exactly one space
 ; * No line longer than 120 characters
 ; - No use of unexported symbols in other packages
 (defvar *line-no* nil)
 (defvar *col-no* nil)
 (defvar *evaluators* nil)
+(defvar *form-stack* nil)
 
-(defparameter *possible-states*
- '(:begin ; start of file
-   :normal ; normal processing
-  ))
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defparameter *possible-states*
+  '(:begin ; start of file
+    :normal ; normal processing
+   )))
 
 
 (defun set-state (state)
    (incf *line-no*)
    (setf *col-no* 0)
    nil))
+ (defevaluator :normal "\\("
+  (lambda ()
+   (push
+    (list *line-no* *col-no*)
+    *form-stack*)
+   nil))
+ (defevaluator :normal "\\)"
+  (lambda ()
+   (let
+    ((form (pop *form-stack*)))
+    (when
+     (< 50 (- *line-no* (car form)))
+     "Forms can't be over 50 lines long"))))
+
  (defevaluator :normal "." (constantly nil))
  )