|
|
|
@ -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]]]] |
|
|
|
; [) (; 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] |
|
|
|
(defn generar-ref [amb] |
|
|
|
(cond |
|
|
|
(cond |
|
|
|
(not= (estado amb) :sin-errores) amb |
|
|
|
(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) |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|