Inside Raul's json parser,

NB. backslash evaluator

subst2=:(_2<\'\"\\\/\b\f\n\r\t')&(i. { (34 92 47 8 12 10 13 9{&.><a.) , ])"0
hexchars=. 'ABCDEF0123456789abcdef'
dfh=: 16 #. 16 | _6 + hexchars i. ]
subst6=: (8 u: [: u:@dfh 2 }. ]) ::] ^:(6&=@# *. '\u'-:2&{.)&.>

splitbs=: (0;(0 10#:10*".;._2]0 :0);(a.e.hexchars,'Uu')+2*a.='\')&;:
  1.1  1.1  2.1 NB. state 0 -- start
  1.0  1.0  2.2 NB. state 1 -- ordinary characters
  3.0  4.0  2.0 NB. state 2 -- \
  1.2  1.2  1.2 NB. state 3 -- \n or \u0000 (last character in backslash escape)
  1.2  5.0  1.2 NB. state 4 -- \u
  1.2  6.0  1.2 NB. state 5 -- \u0
  1.2  7.0  1.2 NB. state 6 -- \u00
  1.2  3.0  1.2 NB. state 7 -- \u000
)

evalbs=: [:; [:subst2  [:subst6 splitbs

NB. Example use:
  evalbs 'test\\..'
test\\..

I expected it should output test\..

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to