Ah, you are talking about a proposed change. It's true that the script handler (0!:0 for example) strips CR characters from definitions. But this happens before the parser starts working.
For example, I created a script that looked like this; data=: 0 :0 asdf jkl ) And I ensured that each line ended with a CR,LF sequence. After executing the script, the CR characters were not present: a.i.data 32 32 97 115 100 102 10 32 32 106 107 108 10 Same behavior in j807 and j902. ---------------------------------- As for the state table -- the ;: dyad hasn't had any problem with floating point state tables that I have noticed. Have you had problems there? Thanks, -- Raul On Sun, Nov 8, 2020 at 11:05 AM Don Guinn <[email protected]> wrote: > > True that a J script only contains LF, but if somehow a script were to > contain CR instead of LF it would be treated as if it contained LF. Windows > treats LF, CR and CR,LF in a script as the same. I don't know how LINUX > would handle CR. But if CR should be accepted like LF, I don't know how the > sequence LF,CR should be treated. Should each be put in separate words or > should they be in one word together? > > And my comment about converting ms to integer. Not a problem for SQ, but > could be a problem if put into the interpreter as C code. Simpler to avoid > the problem now than later. > > On Sun, Nov 8, 2020 at 8:44 AM Raul Miller <[email protected]> wrote: > > > That's not where we want to be. > > > > #;:'NB.',LF > > 2 > > #;:'NB.',CR > > 1 > > > > Also: > > (;:32{.a.)-:(0;sj;mj) sq 32{.a. > > 1 > > > > Thanks, > > > > -- > > Raul > > > > On Sun, Nov 8, 2020 at 10:03 AM Don Guinn <[email protected]> wrote: > > > > > > Would suggest that you add CR to the line 10 of sj as J treats CR like LF > > > in a J script: > > > > > > mj=:10 (10 13)}mj NB. LF and CR > > > > > > On Sun, Nov 8, 2020 at 6:38 AM Raul Miller <[email protected]> > > wrote: > > > > > > > I tested for that case: > > > > > > > > #;:'NB.',LF,LF > > > > 3 > > > > #(0;sj;mj) sq 'NB.',LF,LF > > > > 3 > > > > #(0;sj;mj) sq 'NB.',LF,LF,LF > > > > 4 > > > > > > > > Thanks, > > > > > > > > -- > > > > Raul > > > > > > > > On Sat, Nov 7, 2020 at 7:00 PM Henry Rich <[email protected]> > > wrote: > > > > > > > > > > I have only desk-checked this. { } look OK; but it looks like LF. > > will > > > > > inflect the LF. I could be way off in my analysis. > > > > > > > > > > LF outside of quotes is always a word of its own, admitting no > > > > inflections. > > > > > > > > > > Henry Rich > > > > > > > > > > On 11/7/2020 5:04 PM, Raul Miller wrote: > > > > > > Oops, typo in the documentation string that I didn't catch in the > > copy > > > > > > and paste. > > > > > > > > > > > > Fixed here: > > > > > > > > > > > > mj=: 256$0 NB. X other > > > > > > mj=: 1 (9,a.i.' ')}mj NB. S space and tab > > > > > > mj=: 2 (,(a.i.'Aa')+/i.26)}mj NB. A A-Z a-z excluding N B > > > > > > mj=: 3 (a.i.'N')}mj NB. N the letter N > > > > > > mj=: 4 (a.i.'B')}mj NB. B the letter B > > > > > > mj=: 5 (a.i.'0123456789_')}mj NB. 9 digits and _ > > > > > > mj=: 6 (a.i.'.')}mj NB. . the decimal point > > > > > > mj=: 7 (a.i.':')}mj NB. : the colon > > > > > > mj=: 8 (a.i.'''')}mj NB. Q quote > > > > > > mj=: 9 (a.i.'{')}mj NB. { the left curly brace > > > > > > mj=:10 (10)} mj NB. LF > > > > > > mj=:11 (a.i.'}')}mj NB. } the right curly brace > > > > > > > > > > > > sj=: 0 10#:10*}.".;._2(0 :0) > > > > > > ' X S A N B 9 . : Q { LF }']0 > > > > > > 1.1 0.0 2.1 3.1 2.1 6.1 1.1 1.1 7.1 11.1 10.1 12.1 NB. 0 space > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 11.2 10.2 12.2 NB. 1 other > > > > > > 1.2 0.3 2.0 2.0 2.0 2.0 1.0 1.0 7.2 11.2 10.2 12.2 NB. 2 alp/num > > > > > > 1.2 0.3 2.0 2.0 4.0 2.0 1.0 1.0 7.2 11.2 10.2 12.2 NB. 3 N > > > > > > 1.2 0.3 2.0 2.0 2.0 2.0 5.0 1.0 7.2 11.2 10.2 12.2 NB. 4 NB > > > > > > 9.0 9.0 9.0 9.0 9.0 9.0 1.0 1.0 9.0 9.0 10.2 9.0 NB. 5 NB. > > > > > > 1.4 0.5 6.0 6.0 6.0 6.0 6.0 1.0 7.4 11.4 10.2 12.4 NB. 6 num > > > > > > 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0 7.0 7.0 7.0 NB. 7 ' > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.2 1.2 7.0 11.2 10.2 12.2 NB. 8 '' > > > > > > 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 10.2 9.0 NB. 9 comment > > > > > > 1.2 0.2 2.2 3.2 2.2 6.2 1.0 1.0 7.2 11.2 10.2 12.2 NB. 10 LF > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 13.0 10.2 1.2 NB. 11 { > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 1.2 10.2 14.0 NB. 12 } > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.7 1.7 7.2 1.2 10.2 1.2 NB. 13 {{ > > > > > > 1.2 0.3 2.2 3.2 2.2 6.2 1.7 1.7 7.2 1.2 10.2 1.2 NB. 14 }} > > > > > > ) > > > > > > > > > > > > On Sat, Nov 7, 2020 at 5:02 PM Raul Miller <[email protected]> > > > > wrote: > > > > > >> I think this will do that: > > > > > >> > > > > > >> mj=: 256$0 NB. X other > > > > > >> mj=: 1 (9,a.i.' ')}mj NB. S space and tab > > > > > >> mj=: 2 (,(a.i.'Aa')+/i.26)}mj NB. A A-Z a-z excluding N B > > > > > >> mj=: 3 (a.i.'N')}mj NB. N the letter N > > > > > >> mj=: 4 (a.i.'B')}mj NB. B the letter B > > > > > >> mj=: 5 (a.i.'0123456789_')}mj NB. 9 digits and _ > > > > > >> mj=: 6 (a.i.'.')}mj NB. . the decimal point > > > > > >> mj=: 7 (a.i.':')}mj NB. : the colon > > > > > >> mj=: 8 (a.i.'''')}mj NB. Q quote > > > > > >> mj=: 9 (a.i.'{')}mj NB. { the left curly brace > > > > > >> mj=:10 (10)} mj NB. LF > > > > > >> mj=:11 (a.i.'}')}mj NB. } the right curly brace > > > > > >> > > > > > >> sj=: 0 10#:10*}.".;._2(0 :0) > > > > > >> ' X S A N B 9 . : Q { } LF ']0 > > > > > >> 1.1 0.0 2.1 3.1 2.1 6.1 1.1 1.1 7.1 11.1 10.1 12.1 NB. 0 space > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 11.2 10.2 12.2 NB. 1 other > > > > > >> 1.2 0.3 2.0 2.0 2.0 2.0 1.0 1.0 7.2 11.2 10.2 12.2 NB. 2 alp/num > > > > > >> 1.2 0.3 2.0 2.0 4.0 2.0 1.0 1.0 7.2 11.2 10.2 12.2 NB. 3 N > > > > > >> 1.2 0.3 2.0 2.0 2.0 2.0 5.0 1.0 7.2 11.2 10.2 12.2 NB. 4 NB > > > > > >> 9.0 9.0 9.0 9.0 9.0 9.0 1.0 1.0 9.0 9.0 10.2 9.0 NB. 5 NB. > > > > > >> 1.4 0.5 6.0 6.0 6.0 6.0 6.0 1.0 7.4 11.4 10.2 12.4 NB. 6 num > > > > > >> 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0 7.0 7.0 7.0 NB. 7 ' > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.2 1.2 7.0 11.2 10.2 12.2 NB. 8 '' > > > > > >> 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0 10.2 9.0 NB. 9 comment > > > > > >> 1.2 0.2 2.2 3.2 2.2 6.2 1.0 1.0 7.2 11.2 10.2 12.2 NB. 10 LF > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 13.0 10.2 1.2 NB. 11 { > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.0 1.0 7.2 1.2 10.2 14.0 NB. 12 } > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.7 1.7 7.2 1.2 10.2 1.2 NB. 13 {{ > > > > > >> 1.2 0.3 2.2 3.2 2.2 6.2 1.7 1.7 7.2 1.2 10.2 1.2 NB. 14 }} > > > > > >> ) > > > > > >> > > > > > >> > > > > > >> Thanks, > > > > > >> > > > > > >> -- > > > > > >> Raul > > > > > >> > > > > > >> On Sat, Nov 7, 2020 at 2:19 PM Henry Rich <[email protected]> > > > > wrote: > > > > > >>> That's good. If anybody can see a problem with adding an opcode > > 7, > > > > > >>> titled 'backtrack', which goes back to the previous character > > without > > > > > >>> outputting anything, please speak up. > > > > > >>> > > > > > >>> To match (;: y), your state machine needs to treat LF as a > > special > > > > > >>> character that ends a comment, does not end a quoted string, and > > > > cannot > > > > > >>> be inflected. When not in a quoted string it becomes a word by > > > > itself. > > > > > >>> > > > > > >>> Henry Rich > > > > > >>> > > > > > >>> On 11/7/2020 1:53 PM, Raul Miller wrote: > > > > > >>>> I took the model proposed at > > > > > >>>> > > > > https://code.jsoftware.com/wiki/Vocabulary/semico#Running_the_Machine > > > > > >>>> and fixed a few problems and added an opcode 7, and built a > > state > > > > > >>>> table that satisfies the tests I put it through. > > > > > >>>> > > > > > >>>> It seems to work: > > > > > >>>> > > > > > >>>> sq=:4 :0 > > > > > >>>> 'f s m ijrd'=. x,(#x)}.0;0;'';0 _1 0 _1 assert. 2 <: #x > > > > > >>>> 'i j r d'=. ijrd > > > > > >>>> 'p pj'=. _1,j > > > > > >>>> if. 0 < L. m do. > > > > > >>>> n=. (y i.~;m) { (#m),~(#&>m)#i.#m > > > > > >>>> elseif. ''-:m do. > > > > > >>>> n=. y > > > > > >>>> elseif. do. > > > > > >>>> n=. (a.i.y){m > > > > > >>>> end. > > > > > >>>> result=. f {:: (0#a:);'';i.&.>0 2;0;0 3;0 6 > > > > > >>>> while. i <: #n do. > > > > > >>>> if. i = #n do. > > > > > >>>> if. d >: 0 do. 'newrow action' =. (<r,c =. d) { s > > > > > >>>> elseif. j = _1 do. break. > > > > > >>>> elseif. f = 5 do. break. NB. Don't output final flush > > > > > >>>> elseif. do. 'newrow action' =. 0 5 > > > > > >>>> end. > > > > > >>>> else. 'newrow action' =. (<r,c =. i { n) { s > > > > > >>>> end. > > > > > >>>> assert. newrow < #s > > > > > >>>> if. f = 5 do. result =. result , i, j, r, c, newrow, > > action > > > > end. > > > > > >>>> select. action > > > > > >>>> case. 0 do. > > > > > >>>> case. 6 do. break. > > > > > >>>> case. 7 do. i=. i-2 > > > > > >>>> fcase. 2;3;4;5 do. NB. emit > > > > > >>>> assert. j >: 0 > > > > > >>>> if. f ~: 5 do. > > > > > >>>> ej=. ((r=p)*action>3) { j,pj > > > > > >>>> select. f > > > > > >>>> case. 0 do. newdata =. < ej }. i {. y > > > > > >>>> case. 1 do. newdata =. ej }. i {. y > > > > > >>>> case. 2 do. newdata =. ej , i > > > > > >>>> case. 3 do. newdata =. (}:$s) #: r,c > > > > > >>>> case. 4 do. newdata =. ej , (i-ej) , (}:$s) #: r,c > > > > > >>>> case. do. > > > > > >>>> 'Invalid output type' 13!:8 (1) > > > > > >>>> end. > > > > > >>>> if. (action <: 3)+.r~:p do. result =. result , > > newdata > > > > > >>>> else. result =. newdata (<:#result)} result > > > > > >>>> end. > > > > > >>>> end. > > > > > >>>> if. r~:p do. pj=. j end. > > > > > >>>> p=. action {_1 _1 _1 _1,r,r > > > > > >>>> case. 1 do. > > > > > >>>> j =. (action e. 1 2 4) { _1,i > > > > > >>>> case. do. > > > > > >>>> 'Invalid action' 13!:8 (1) > > > > > >>>> end. NB. select action > > > > > >>>> r =. newrow > > > > > >>>> i =. i + 1 > > > > > >>>> end. > > > > > >>>> result > > > > > >>>> ) > > > > > >>>> > > > > > >>>> mj=: 256$0 NB. X other > > > > > >>>> mj=: 1 (9,a.i.' ')}mj NB. S space and tab > > > > > >>>> mj=: 2 (,(a.i.'Aa')+/i.26)}mj NB. A A-Z a-z excluding N B > > > > > >>>> mj=: 3 (a.i.'N')}mj NB. N the letter N > > > > > >>>> mj=: 4 (a.i.'B')}mj NB. B the letter B > > > > > >>>> mj=: 5 (a.i.'0123456789_')}mj NB. 9 digits and _ > > > > > >>>> mj=: 6 (a.i.'.')}mj NB. . the decimal point > > > > > >>>> mj=: 7 (a.i.':')}mj NB. : the colon > > > > > >>>> mj=: 8 (a.i.'''')}mj NB. Q quote > > > > > >>>> mj=: 9 (a.i.'{')}mj NB. { the left curly brace > > > > > >>>> mj=:10 (a.i.'}')}mj NB. } the right curly brace > > > > > >>>> > > > > > >>>> NB.0 1 2 3 4 5 6 7 8 9 10 > > > > > >>>> sj=: _2]\"1 }.".;._2 (0 : 0) > > > > > >>>> ' X S A N B 9 . : Q { } ']0 > > > > > >>>> 1 1 0 0 2 1 3 1 2 1 6 1 1 1 1 1 7 1 10 1 11 1 > > NB. 0 > > > > space > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 0 1 0 7 2 10 2 11 2 > > NB. 1 > > > > other > > > > > >>>> 1 2 0 3 2 0 2 0 2 0 2 0 1 0 1 0 7 2 10 2 11 2 > > NB. 2 > > > > alp/num > > > > > >>>> 1 2 0 3 2 0 2 0 4 0 2 0 1 0 1 0 7 2 10 2 11 2 > > NB. 3 N > > > > > >>>> 1 2 0 3 2 0 2 0 2 0 2 0 5 0 1 0 7 2 10 2 11 2 > > NB. 4 > > > > NB > > > > > >>>> 9 0 9 0 9 0 9 0 9 0 9 0 1 0 1 0 9 0 9 0 9 0 > > NB. 5 > > > > NB. > > > > > >>>> 1 4 0 5 6 0 6 0 6 0 6 0 6 0 1 0 7 4 10 4 11 4 > > NB. 6 > > > > num > > > > > >>>> 7 0 7 0 7 0 7 0 7 0 7 0 7 0 7 0 8 0 7 0 7 0 > > NB. 7 ' > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 2 1 2 7 0 10 2 11 2 > > NB. 8 > > > > '' > > > > > >>>> 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 9 0 > > NB. 9 > > > > comment > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 0 1 0 7 2 12 0 1 2 NB. > > 10 { > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 0 1 0 7 2 1 2 13 0 NB. > > 11 } > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 7 1 7 7 2 1 2 1 2 NB. > > 12 > > > > {{ > > > > > >>>> 1 2 0 3 2 2 3 2 2 2 6 2 1 7 1 7 7 2 1 2 1 2 NB. > > 13 > > > > }} > > > > > >>>> ) > > > > > >>>> > > > > > >>>> (0;sj;mj) sq '{{+/y}}' > > > > > >>>> +--+-+-+-+--+ > > > > > >>>> |{{|+|/|y|}}| > > > > > >>>> +--+-+-+-+--+ > > > > > >>>> (0;sj;mj) sq '{{+/y}}}' > > > > > >>>> +--+-+-+-+--+-+ > > > > > >>>> |{{|+|/|y|}}|}| > > > > > >>>> +--+-+-+-+--+-+ > > > > > >>>> (0;sj;mj) sq '{{.+/y}}.' > > > > > >>>> +-+--+-+-+-+-+--+ > > > > > >>>> |{|{.|+|/|y|}|}.| > > > > > >>>> +-+--+-+-+-+-+--+ > > > > > >>>> > > > > > >>>> Thanks, > > > > > >>>> > > > > > >>> > > > > > >>> -- > > > > > >>> This email has been checked for viruses by AVG. > > > > > >>> https://www.avg.com > > > > > >>> > > > > > >>> > > > > ---------------------------------------------------------------------- > > > > > >>> For information about J forums see > > > > http://www.jsoftware.com/forums.htm > > > > > > > > ---------------------------------------------------------------------- > > > > > > For information about J forums see > > http://www.jsoftware.com/forums.htm > > > > > > > > > > > > > > > -- > > > > > This email has been checked for viruses by AVG. > > > > > https://www.avg.com > > > > > > > > > > > > ---------------------------------------------------------------------- > > > > > For information about J forums see > > http://www.jsoftware.com/forums.htm > > > > ---------------------------------------------------------------------- > > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
