Add documentation checker for exported symbols
[clnl] / src / main / package.lisp
index e812ac08f83e41f6e4467a7ccba4bc8de11aa08e..111aa9e4a5d26292503be50741888becf4b1a079 100644 (file)
@@ -1,34 +1,81 @@
 (defpackage #:clnl (:use :common-lisp)
- (:export :run :boot :run-commands :run-reporter))
+ (:export :run :boot :run-commands :run-reporter)
+ (:documentation
+  "Main CLNL package
+
+The entry point for general purpose clnl startup, as well as
+the place that ties all the parts together into a cohesive whole."))
 
 (defpackage #:clnl-parser
  (:use :common-lisp)
- (:export :parse))
+ (:export :parse)
+ (:documentation
+  "CLNL Parser
+
+All the code to convert the list of tokens coming from the lexer
+into an ast that can be transpiled later."))
 
 (defpackage #:clnl-random
  (:use :common-lisp)
  (:shadow #:export)
- (:export #:export #:set-seed #:next-int #:next-double))
+ (:export #:export #:set-seed #:next-int #:next-double)
+ (:documentation
+  "Wrapper around mt19937.
+
+mt19937 implements a merseinne twister that must be adapted a little in
+order to match the implementation in the main NetLogo codebase which tries
+to match how java.util.Random works.  Turtles, all the way down."))
 
 (defpackage #:clnl-transpiler
  (:use :common-lisp)
- (:export :transpile-commands :transpile-reporter))
+ (:export :transpile-commands :transpile-reporter)
+ (:documentation
+  "CLNL Transpiler
+
+The transpiler is responsible for taking an ast and turning it into valid CL code
+targeting the nvm.  Here is where start to care about commands versus reporters
+and ensuring that things are in the right place.  The reason we wait until here
+is because we want to allow someone else to play with the AST before handing it off
+to us.  For instance, the command center wants to add \"show\" to reporters, and
+the users dictate based on entry point whether they are expecting a command
+or a reporter.  So monitors can say \"hey, transpile this reporter\" and we'll check
+to make sure it actually is.
+
+Furthermore, the lisp code that any netlogo code would be transpiled to should
+use exported symbols, such that anyone writing NetLogo code in lisp could use
+the nvm in the same way that comes out of this transpiler
+All the code to convert the list of tokens coming from the lexer
+into an ast that can be transpiled later."))
 
 (defpackage #:clnl-nvm
  (:use :common-lisp)
- (:export :export-world :create-world :dump-object :turtle-color :turtle-xcor :turtle-ycor :turtle-heading
+ (:export :export-world :create-world :current-state
   ; API as used by transpiled NetLogo programs
   #:ask
   #:create-turtles
   #:forward
   #:random-float
   #:show
-  #:turtles))
+  #:turtles)
+ (:documentation
+  "CLNL NVM
+
+NetLogo Virtual Machine: the simulation engine."))
 
 (defpackage #:clnl-lexer
  (:use :common-lisp)
- (:export :lex))
+ (:export :lex)
+ (:documentation
+  "CLNL Lexer
+
+The primary code responsible for tokenizing NetLogo code."))
 
 (defpackage #:clnl-interface
  (:use :common-lisp)
- (:export :run :export-view))
+ (:export :run :export-view)
+ (:documentation
+  "CLNL Interface
+
+The NetLogo view interface using opengl.  This is responsible for taking the
+current state of the enging and displaying it.  Will not house any interface
+components."))