X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Fcode-parse.lisp;h=b2a9e4508e89039f8ae91f5cd2b08910201c6480;hp=d40f7bad59ce28fa936f73268609505e44026981;hb=31f7cb6;hpb=97c390f3cee5094fa6795acd4b25b7598d5dd1bd diff --git a/src/main/code-parse.lisp b/src/main/code-parse.lisp index d40f7ba..b2a9e45 100644 --- a/src/main/code-parse.lisp +++ b/src/main/code-parse.lisp @@ -11,7 +11,7 @@ (defun global->prim (global) (list :name global :type :reporter :macro `(lambda () ',(intern (symbol-name global) clnl:*model-package*)))) -(defun turtles-own->prim (symb) +(defun own->prim (symb) (list :name symb :type :reporter :macro `(lambda () '(clnl-nvm:agent-value ,symb)))) (defun breed->prims (breed-list) @@ -110,7 +110,8 @@ DESCRIPTION: (mapcar (case (car lexed-ast) (:globals #'global->prim) - (:turtles-own #'turtles-own->prim) + (:turtles-own #'own->prim) + (:patches-own #'own->prim) (t #'global->prim)) in-list) *dynamic-prims*))) (parse-internal after-list))))) @@ -166,6 +167,23 @@ DESCRIPTION: (lambda (turtles-own-var) (intern (symbol-name turtles-own-var) :keyword)) (cdr (second (find :turtles-own code-parsed-ast :key #'car))))) +(defun patches-own-vars (code-parsed-ast) + "PATCHES-OWN-VARS CODE-PARSED-AST => PATCHES-OWN-VARS + + PATCHES-OWN-VARS: PATCHES-OWN-VAR* + +ARGUMENTS AND VALUES: + + CODE-PARSED-AST: An ast as created by clnl-code-parse:parse + PATCHES-OWN-VAR: A symbol interned in :keyword + +DESCRIPTION: + + Returns the turtles own variables that get declared in the code." + (mapcar + (lambda (patches-own-var) (intern (symbol-name patches-own-var) :keyword)) + (cdr (second (find :patches-own code-parsed-ast :key #'car))))) + (defun procedures (code-parsed-ast) "PROCEDURES CODE-PARSED-AST => PROCEDURES