From 1628337f42e7aa3814917ac58e5b1c6dd3f53ddb Mon Sep 17 00:00:00 2001 From: CrossNox Date: Tue, 29 Nov 2022 05:35:14 -0300 Subject: [PATCH] agrego or --- src/rustint/core.clj | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/rustint/core.clj b/src/rustint/core.clj index 8c1b866..184e0d7 100644 --- a/src/rustint/core.clj +++ b/src/rustint/core.clj @@ -1719,6 +1719,12 @@ ; ATAN: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su arcotangente y la coloca al final de la pila. ; ABS: Incrementa cont-prg en 1, quita de la pila un elemento numerico, calcula su valor absoluto y lo coloca al final de la pila. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; No puedo usar or a secas: +; Can't take value of a macro: #'clojure.core/or +(defn or-diadico [arg1 arg2] + (or arg1 arg2) +) + (defn interpretar [cod regs-de-act cont-prg pila mapa-regs] (let [fetched (cod cont-prg), opcode (if (symbol? fetched) fetched (first fetched)), @@ -1893,7 +1899,6 @@ (recur cod regs-de-act (inc cont-prg) res mapa-regs) ) - ; NOT: Incrementa cont-prg en 1, quita de la pila un elemento booleano, lo niega y lo coloca al final de la pila. NOT (let [ res (not (last pila)), @@ -1965,6 +1970,11 @@ ; SUB: Como ADD, pero resta. SUB (let [res (aplicar-operador-diadico - pila)] (if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs))) + + ; OR: Como ADD, pero calcula el or entre los dos valores + OR (let [res (aplicar-operador-diadico or-diadico pila)] + (if (nil? res) res (recur cod regs-de-act (inc cont-prg) res mapa-regs))) + ) ) )