42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
#include <basico.h>
|
|
|
|
algoritmo
|
|
|
|
braizq="[", brader="]" // bug de Hopper :(
|
|
|
|
largo de datos=0
|
|
preparar datos (DATA_BRACKET)
|
|
obtener tamaño de datos, menos '1', guardar en 'largo de datos'
|
|
|
|
iterar
|
|
|
|
bra="", obtener dato, guardar en 'bra'
|
|
|
|
i=1, b=0, error_pos=""
|
|
iterar grupo( ++i, #( i<=len(bra) && is not neg (b) ),\
|
|
#( b += ((bra[i]==braizq) - (bra[i]==brader)) )\
|
|
#( error_pos = cat(replicate(" ",i-1),"^\n") ) )
|
|
|
|
solo si ( #(is pos(b)),\
|
|
#( error_pos=cat(cat(" ",error_pos),"(missing closed bracket)\n\n")))
|
|
|
|
solo si ( #(is neg(b)),\
|
|
#( error_pos=cat(error_pos,"(extra closed bracket)\n\n")))
|
|
|
|
imprimir ( #( rpad(" ",40,bra) ), ": ", \
|
|
solo si (b, "un"), "balanced\n",\
|
|
solo si (b, error_pos) )
|
|
|
|
mientras ' largo de datos-- '
|
|
|
|
terminar
|
|
|
|
subrutinas
|
|
|
|
DATA_BRACKET:
|
|
datos ("","[ [ ] [ [[] ][] ] [[]] ]","[[ ][[[ ][ ]]",\
|
|
"[][][[]]][","][[]][] [[[]]] [][]","[][] [][][[]]",\
|
|
"[ a-b * [c/d] + [[10 * sin 30 ]-1] ]",\
|
|
"[ a-b * [c/d] + [[10 * sin 30 ]]-1] ]")
|
|
back
|