X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Fcode-parse.lisp;h=c0e553be8106676aeb3382229f4a57cbb93268ed;hp=644ef13278f3ea145cdfdeb40ef959dc69c0f3bb;hb=fb6e383b5e0f5c86e4c79e0839dcbfee91b2e9fc;hpb=c9cf0d199bfaa751722aab688d22f43e4d70ae34 diff --git a/src/main/code-parse.lisp b/src/main/code-parse.lisp index 644ef13..c0e553b 100644 --- a/src/main/code-parse.lisp +++ b/src/main/code-parse.lisp @@ -8,6 +8,13 @@ (defvar *dynamic-prims* nil) (defun global->prim (global) (list :name global)) +(defun breed->prims (breed-list) + (let + ((plural-name (symbol-name (car breed-list)))) + (list + (list :name (car breed-list)) + (list :name (intern (format nil "~A-HERE" plural-name) :keyword)) + (list :name (intern (format nil "CREATE-~A" plural-name) :keyword) :args '(:number :command-block))))) (defun parse (lexed-ast &optional external-globals) "PARSE LEXED-AST &optional EXTERNAL-GLOBALS => AST @@ -86,7 +93,9 @@ DESCRIPTION: (multiple-value-bind (in-list after-list) (find-closing-bracket (cddr lexed-ast)) (cons (list (car lexed-ast) (cons :list-literal in-list)) - (parse-internal after-list)))) + (let + ((*dynamic-prims* (append (breed->prims in-list) *dynamic-prims*))) + (parse-internal after-list))))) (defun find-closing-bracket (tokens) (cond