+ (:export #:export #:set-seed #:next-int #:next-double #:next-long)
+ (: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 #:reporter-p #:command-list-p)
+ (: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)
+ (:shadow #:random #:count)
+ (:export #:export-world #:create-world #:current-state #:with-stop-handler
+ ; API as used by transpiled NetLogo programs
+ #:agent-value
+ #:ask
+ #:clear-all
+ #:count
+ #:create-turtles
+ #:die
+ #:display
+ #:hatch
+ #:of
+ #:forward
+ #:lookup-color
+ #:one-of
+ #:patches
+ #:reset-ticks
+ #:random
+ #:random-float
+ #:random-xcor
+ #:random-ycor
+ #:set-default-shape
+ #:setxy
+ #:show
+ #:stop
+ #:turtles
+ #:turtles-here
+ #:tick
+ #:ticks
+ #:turn-right #:turn-left
+ #:with)
+ (:documentation
+ "CLNL NVM
+
+NetLogo Virtual Machine: the simulation engine."))
+
+(defpackage #:clnl-lexer
+ (:use :common-lisp)
+ (:export #:lex)
+ (:documentation
+ "CLNL Lexer
+
+The primary code responsible for tokenizing NetLogo code."))