From 6f8b9235ec3a162e2f400594273e2302ec5f0109 Mon Sep 17 00:00:00 2001 From: CrossNox Date: Mon, 28 Nov 2022 20:03:45 -0300 Subject: [PATCH] fix code --- src/rustint/core.clj | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/rustint/core.clj b/src/rustint/core.clj index 6754e50..b3a8fcd 100644 --- a/src/rustint/core.clj +++ b/src/rustint/core.clj @@ -2214,10 +2214,23 @@ ; [) (; println! ( "{}" , v ) ; }) [fn inc ( v : & mut i64 ) { * v += 1 ; } fn main ( ) { let mut v : i64 = 5 ; inc ( & mut v] :sin-errores [[0 2] [[inc [fn [([v : & mut i64]) ()]] 2] [main [fn [() ()]] 6] [v [var-mut i64] 0]]] 1 [[CAL 6] HLT [POPARG 0] [PUSHFI 1] [POPADDREF 0] RETN [PUSHFI 5] [POP 0] [PUSHADDR 0]] [[2 [i64 nil]] [6 [i64 nil]]]] ; ^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defn get-val-ult-var [ult-var ctx] + (let [ + matches (filter #(= ult-var (get %1 0)) (get ctx 1)), + last_match (last matches) + ] (get last_match 2) + ) +) + (defn generar-ref [amb] (cond (not= (estado amb) :sin-errores) amb - :else (generar amb 'PUSHADDR 0) + :else (let [ + ult-var (last (simb-ya-parseados amb)), + val-ult-var (get-val-ult-var ult-var (contexto amb)) + ] + (generar amb 'PUSHADDR val-ult-var) + ) ) )