Oops, no, it works. I was just testing on an older version of J.

Though the actual implementation of splitword2 is flawed, since it
doesn't support the idea of strings which don't begin or end with
whitespace.

Here's an implementation with almost the behavior I think you specified:

splitword3=: 0;(states'');a.e.' ',CRLF,TAB
  4.1   1          NB. 0. start here.
  2.1   1          NB. 1. skip starting whitespace
  3.7   3.7        NB. 2. starting whitespace had ended, backtrack
  4.2   4.2        NB. 3. empty on starting whitespace
  4     5.2        NB. 4. other
  6.7   6.7        NB. 5. new whitespace, backtrack
  7.3   7.3        NB. 6. empty on new whitespace
  4.1   7          NB. 7. skip new whitespace
)

That said, I'm not sure if this is a temporary thing or if it should
be left in place.

Also, J crashed while I was debugging this (I'm getting a non-empty
whitespace at the end of the string, and I do not understand why).
And, your next email in this thread came in, so I should probably stop
here, for now.

Thanks,


--
Raul

On Sun, Nov 15, 2020 at 7:44 AM Raul Miller <[email protected]> wrote:
>
> Hmm...
>
> The basic purpose of the new backtrack mechanism is to allow token
> formation rules to depend on characters which have not yet been
> encountered but which will be encountered soon. It also introduces
> some new risks, as a consequence -- the possibility of infinite loops
> and the possibility of emitting tokens containing characters which
> have been emitted in previous tokens. The possibility of emitting an
> empty token lies right on the boundary of that second risk area.
>
> Testing, I get an index error when I try to emit an empty token.
>
> states=: 3 :0
>  0 10 #: <. 10 * > -.&a: <@".;._2] 0 :0
> )
>
> splitword=: 0;(states'');a.e.' ',CRLF,TAB
>   1.1   0          NB. 0 whitespace
>   1     0.3        NB. 1 other
> )
>
> splitword2=: 0;(states'');a.e.' ',CRLF,TAB
>   1.1   0          NB. 0 whitespace
>   2.7   2.7        NB. 1 whitespace had ended, backtrack
>   3.2   3.2        NB. 2 empty on whitespace end
>   3     0.3        NB. 3 other
> )
>
>    splitword ;: 'this is a test' NB. this works
>    splitword2 ;: 'this is a test' NB. index error
>
> So either my test is flawed, or the implementation gives an index
> error for backtracking past the start of a token.
>
> Thanks,
>
>
> --
> Raul
>
> On Sat, Nov 14, 2020 at 7:57 PM 'Pascal Jasmin' via Programming
> <[email protected]> wrote:
> >
> > Can this be used to emit empty words?  What are some imagined uses of this 
> > code?
> >
> >
> > http://www.jsoftware.com/pipermail/programming/2017-March/046910.html
> >
> > suggested  ew when j=_1 should emit empty box/word instead of crashing, 
> > seemed simple enough, but I don't understand this addition yet.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Saturday, November 14, 2020, 05:08:33 p.m. EST, Henry Rich 
> > <[email protected]> wrote:
> >
> >
> >
> >
> >
> > I have been rewriting interfaces to make the JE reentrant.  This beta
> > has changes in I/O to the front end, which has more ramifications than I
> > can test for.  I am hoping the beta users will cover the combinations &
> > report anything that looks unusual.
> >
> > This beta has the new backtrack function for (x ;: y).
> >
> > Henry Rich
> >
> > On 11/14/2020 5:05 PM, Eric Iverson wrote:
> > > J902-beta-m available for windows/macos/linux.
> > >
> > > If you already run 902-beta, then upgrade is easy:
> > >    load'pacman'
> > >    'upgrade'jpkg'jengine'
> > > ----------------------------------------------------------------------
> > > 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

Reply via email to