#include 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