X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Fpackage.lisp;h=111aa9e4a5d26292503be50741888becf4b1a079;hp=e812ac08f83e41f6e4467a7ccba4bc8de11aa08e;hb=5c8699f151207953f4029e0fc6c488afce99f756;hpb=471de83db1aee70065808cbc061867e3320bf4b7 diff --git a/src/main/package.lisp b/src/main/package.lisp index e812ac0..111aa9e 100644 --- a/src/main/package.lisp +++ b/src/main/package.lisp @@ -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."))