@ -1900,10 +1900,35 @@
;
; nil
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;TODO
;(defn listar
;
;)
( defn flistar [ ilevel t nxt ]
( cond
( string? t ) ( format "\"%s\" " t )
( = t ( symbol "{" ) ) ( clojure.string/join
( cons "\n{\n" ( repeat ( * ilevel 2 ) " " ) )
)
( = t ( symbol "}" ) ) "\n}"
( and ( not= nxt ( symbol "{" ) ) ( not= nxt ( symbol "}" ) ) ) ( format "%s " t )
:else ( format "%s" t )
)
)
( defn listar [ l ]
( let [ contadores ( hash-map ( symbol "{" ) 1 , ( symbol "}" ) -1 ) ,
ident_levels ( reductions + ( map # ( get contadores %1 0 ) l ) ) ,
]
( dorun
(
map
print
( map
# ( apply flistar ( cons %1 %2 ) )
ident_levels
( partition 2 1 ( concat l ' ( nil ) ) )
)
)
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; AGREGAR-PTOCOMA: Recibe una lista con los tokens de un programa en Rust y la devuelve con un token ; insertado a continuacion de ciertas } (llaves de cierre, pero no a continuacion de todas ellas).