diff options
author | Bruno Cichon <ebrasca.ebrasca@openmailbox.org> | 2017-02-19 22:38:38 +0100 |
---|---|---|
committer | Bruno Cichon <ebrasca.ebrasca@openmailbox.org> | 2017-02-19 22:38:38 +0100 |
commit | b94d84cf431e3ca480d01ff277bf40463da09224 (patch) | |
tree | ac1cf0baea0d16fdbf19133174370209f55350a0 /src | |
parent | e28171df2caa910eb194750f70bdfe9272f85f6d (diff) |
Add some documentation.
Diffstat (limited to 'src')
-rw-r--r-- | src/l-system.lisp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/l-system.lisp b/src/l-system.lisp index c3f47d0..1ea07fe 100644 --- a/src/l-system.lisp +++ b/src/l-system.lisp @@ -7,6 +7,8 @@ (defparameter *l-system-clauses* (make-hash-table :test 'equal)) (defun l-system (fn axiom depth) + "Expand axiom into some larger list of symbols. +It can expand to parametric grammar or to context sensitive grammar." (iter (repeat depth) (with result = axiom) (setf result @@ -14,6 +16,7 @@ (finally (return result)))) (defun parametric-grammar (elements) + "Handle parametric grammar." (iter (for (symbol . parameters) in elements) (for func = (gethash symbol *l-system-clauses*)) (appending (if (functionp func) @@ -21,6 +24,7 @@ (list `(,symbol ,@parameters)))))) (defun context-sensitive-grammar (elements) + "Handle context sensitive grammar and parametric grammar." (iter (for elt on elements) (with symbol0 = nil) (for (symbol1 . parameters1) = (first elt)) @@ -33,21 +37,26 @@ (setf symbol0 (first (first elt))))) (defmacro setf-l-system-rule (symbol lambda) + "Set rules to grammar." `(setf (gethash ,symbol *l-system-clauses*) ,lambda)) (defun make-l-system-expr (item) + "(Symbol . paremetes)" `(list ',(first item) ,@(rest item))) (defun make-l-system-list (rest) + "Make rule conversion part." (iter (for item in rest) (collecting (make-l-system-expr item)))) (defmacro make-l-system-rule (vars &body body) + "Define rule for grammar." `#'(lambda ,(append vars '(&rest rest)) (declare (ignorable rest)) (list ,@(make-l-system-list body)))) (defmacro -> (symbol vars &body body) + "Define and set rules to grammar." `(setf-l-system-rule ',symbol (make-l-system-rule ,vars ,@body))) |