(defpackage #:clnl (:use :common-lisp)
- (:export :run :boot :run-commands :run-reporter)
+ (:export
+ #:run #:boot #:run-commands #:run-reporter #:*model-package*
+ #:model->multi-form-lisp #:model->single-form-lisp
+ #:nlogo->lisp)
(:documentation
"Main CLNL package
(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-code-parser
+ (:use :common-lisp)
+ (:export #:parse #:globals #:procedures #:turtles-own-vars #:patches-own-vars #:breeds)
+ (:documentation
+ "CLNL Code Parser
+
+A parser specifically for code from NetLogo models, that turns the lexed
+ast from an entire structured file into something more defined.
+
+This is different from the general parser (in clnl-parser) in that
+it's made for parsing the code section of nlogo files, and so works
+outside of the constraints. In NetLogo, I believe this is analagous
+to the StructureParser, but I'm guessing there's weird overlap with
+other things."))
+
(defpackage #:clnl-random
(:use :common-lisp)
(:shadow #:export)
- (:export #:export #:set-seed #:next-int #:next-double)
+ (:export #:export #:set-seed #:next-int #:next-double #:next-long)
(:documentation
"Wrapper around mt19937.
(defpackage #:clnl-transpiler
(:use :common-lisp)
- (:export :transpile-commands :transpile-reporter)
+ (:export #:transpile #:reporter-p #:command-list-p)
(:documentation
"CLNL 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 :current-state
- ; API as used by transpiled NetLogo programs
- #:ask
- #:create-turtles
- #:forward
- #:random-float
- #:show
- #:turtles)
- (:documentation
- "CLNL NVM
-
-NetLogo Virtual Machine: the simulation engine."))
-
(defpackage #:clnl-lexer
(:use :common-lisp)
- (:export :lex)
+ (:export #:lex)
(:documentation
"CLNL Lexer
(defpackage #:clnl-interface
(:use :common-lisp)
- (:export :run :export-view)
+ (:export #:run #:export-view #:initialize)
(:documentation
"CLNL Interface
current state of the enging and displaying it. Will not house any interface
components."))
-(defpackage #:clnl-cli
- (:use :common-lisp :cl-charms/low-level)
- (:export :run)
+(defpackage #:clnl-model
+ (:use :common-lisp)
+ (:export #:default-model #:read-from-nlogo #:world-dimensions #:widget-globals #:code)
+ (:documentation
+ "CLNL Model
+
+The representation, parsing, and serializing of NetLogo model files, including
+all of the sections, and subsections held within. This package houses not only
+the code to read and write .nlogo files, but also the living state of the model
+as clnl runs."))
+
+(defpackage #:clnl-extensions
+ (:use :common-lisp)
+ (:export #:load-extension)
(:documentation
- "CLNL CLI
+ "CLNL Extensions
+
+The loading and handling of extensions to CLNL modeled after the way that
+NetLogo handles extensions.
-The main NetLogo interface for interacting with the program. Since CLNL is
-a command line interface program with a view for display purposes only, this
-is where all the features that the traditional NetLogo UI lives."))
+Extensions are defined as Common Lisp systems (under asdf) that export
+the primitive PRIMS. The name of the asdf system is defined to be the
+name of the extension prepended by CLNL-EXTENSION-, such that for a hypothetical
+extension ARRAY, the name of the asdf system would be CLNL-EXTENSION-ARRAY
+and found through conventional asdf means. The package that the required
+functions are symbols in should be the same as the asdf system."))
+
+(defpackage #:clnl-default-model-package
+ (:use :common-lisp)
+ (:shadow #:go))