Thanks for the references. However, it turns out that I have been somewhat familiar with an RL shift-reduce parser.
Out of curiosity, I tried to shed some ligth. First with the trace facility, trace'5}' --------------- 3 Adverb ----- 5 } 5} ============================== trace'5"' --------------- 6 Bident ----- 5 " 5" ============================== It did not help me much. Just in case, I tried the verb which started this thread, ( S=. '(<(<,'':''),<(<(,''0'');1),<(,''0'');1 0$'''') (1 : ''u u`:6`:6 y'')' ) (<(<,':'),<(<(,'0');1),<(,'0');1 0$'') (1 : 'u u`:6`:6 y') trace S --------------- 4 Conj ------- 1 : 'u u`:6`:6 y' 1 : 'u u`:6`:6 y' . . . --------------- 8 Paren ------ ( <(<,':'),<(<(,'0');1),<(,'0');1 0$'' ) ┌────────────────┐ │┌─┬────────────┐│ ││:│┌─────┬────┐││ ││ ││┌─┬─┐│┌─┬┐│││ ││ │││0│1│││0│││││ ││ ││└─┴─┘│└─┴┘│││ ││ │└─────┴────┘││ │└─┴────────────┘│ └────────────────┘ --------------- 3 Adverb ----- <(<,':'),<(<(,'0');1),<(,'0');1 0$'' 1 : 'u u`:6`:6 y' <(<,':'),<(<(,'0');1),<(,'0');1 0$'' (1 : 'u u`:6`:6 y') ============================== |syntax error: trace | <(<,':'),<(<(,'0');1),<(,'0');1 0$''(1 :'u u`:6`:6 y') but at the crucial moment trace got bitten by the bug! :) (It was a long shot but I aimed for an updated j808 DLL on the System/Installation/Zips page, https://code.jsoftware.com/wiki/System/Installation/Zips but I got only broken links (which presumably they will be operating in the future).) Alright then, can Marshall's formal parser, https://code.jsoftware.com/wiki/User:Marshall_Lochbaum/Formal_Parser help? parse@:splitwords'5}' ┌─────────────────┐ │┌─┬─────┬───────┐│ ││1│┌─┬─┐│┌─────┐││ ││ ││2│}│││┌─┬─┐│││ ││ │└─┴─┘│││0│5││││ ││ │ ││└─┴─┘│││ ││ │ │└─────┘││ │└─┴─────┴───────┘│ └─────────────────┘ parse@:splitwords'5"' ┌──────────────────────────┐ │┌─┬────────┬─────────────┐│ ││1│┌─┬────┐│┌─────┬─────┐││ ││ ││3│hook│││┌─┬─┐│┌─┬─┐│││ ││ │└─┴────┘│││3│"│││0│5││││ ││ │ ││└─┴─┘│└─┴─┘│││ ││ │ │└─────┴─────┘││ │└─┴────────┴─────────────┘│ └──────────────────────────┘ I still did not see why 5} can be considered to be reduced but 5" is not (incidentally, "bident" instead of "hook" would be a better word in this case, among other things). How about the troublesome sentence S? parse@:splitwords S (I am skipping the output because it would look too messy in the archive; but, the resulting tree is shallow.) You mentioned the stack and a reducing the number of items in the parse representation and I finally remembered Roger Stokes' excellent Evaluation in Slow Motion (EVM), '5}'EVM 5} ┌─┬─┐ │5│}│ └─┴─┘ hist'' Queue Stack Rule ┌────────┐ ┌──────┬────┬───┐ ┌────┐ │mark 5 }│ │ │ │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├────┤ │mark 5 │ │ } │ │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├────┤ │mark │ │ 5 │ } │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├────┤ │ │ │ mark │ 5 │ } │ │adv │ ├────────┤ ├──────┼────┼───┤ ├────┤ │ │ │ mark │ 5} │ │ │ │ └────────┘ └──────┴────┴───┘ └────┘ '5"'EVM 5" ┌─┬─┐ │5│"│ └─┴─┘ hist'' Queue Stack Rule ┌────────┐ ┌──────┬────┬───┐ ┌──────┐ │mark 5 "│ │ │ │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├──────┤ │mark 5 │ │ " │ │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├──────┤ │mark │ │ 5 │ " │ │ │ │ ├────────┤ ├──────┼────┼───┤ ├──────┤ │ │ │ mark │ 5 │ " │ │bident│ ├────────┤ ├──────┼────┼───┤ ├──────┤ │ │ │ mark │ 5" │ │ │ │ └────────┘ └──────┴────┴───┘ └──────┘ I must be blind, I cannot see the difference; they look eerily similar to me. Right, the adv rule reduces the number of items in the stack; but, so does the bident rule. The bad news (for me) is that I am still in the dark. The good news is that I can safely assume that knowing the difference is irrelevant for programming which could suggest moving any potential additional discussion on this particular topic to the chat forum. P.S. I find the history of '(<(<,'':''),<(<(,''0'');1),<(,''0'');1 0$'''') (1 : ''u u`:6`:6 y'')'EVM quite interesting. On Wed, Dec 12, 2018 at 11:35 AM Raul Miller <rauldmil...@gmail.com> wrote: > Here's a more concise explanation: > > In http://www.jsoftware.com/help/dictionary/dicte.htm the phrase "and > eventually executing some eligible portion of the stack and replacing > it by the result of the execution" describes the same thing that > "reduce" describes what "reduce" would be in a shift-reduce parser > explanation. Basically, that "reduce" might also be described as "a > step of evaluation". > > "Shifting", on the other hand, is taking another token (or word) from > the parsing queue - that's another kind of evaluation step, but it > doesn't reduce the number of items in the parse representation. > > But it really helps if you see it in action - it's such a simple > concept that it's slippery to think about if you never see it > happening. > > (Perhaps also worth noting that verb definitions are only extracted > from their name during J's "parser reduce" steps while other named > entities have their names extracted from their names during J's > "parser shift"? This is an important distinction because of how > locales are implemented, and it's also why undefined names are treated > like verbs in tacit definitions, That said, note that names are not > always undefined and this can be a source of confusion when using a > script with forward verb references.) > > Thanks, > > -- > Raul > On Wed, Dec 12, 2018 at 11:18 AM Raul Miller <rauldmil...@gmail.com> > wrote: > > > > These look like decent explanations: > > > > http://www.cs.binghamton.edu/~zdu/parsdemo/srintro.html > > > > or, if you prefer a video presentation: > > > > https://www.youtube.com/watch?v=Ga9b_E85Lwc > > > > Mind you, the examples are for parsers left-to-right parsers > > (indicated by LR in the alphabet soup used to label the things), while > > J's parser is a right-to-left parser (which would probably be labeled > > by RL along with some other bits of alphabet soup to describe the four > > token pattern matching that it uses to decide what reduce action to > > take). > > > > Thanks, > > > > -- > > Raul > > > > On Wed, Dec 12, 2018 at 10:55 AM Jose Mario Quintana > > <jose.mario.quint...@gmail.com> wrote: > > > > > > Why? Can you elaborate? > > > > > > On Wed, Dec 12, 2018 at 10:07 AM Raul Miller <rauldmil...@gmail.com> > wrote: > > > > > > > Yes. > > > > > > > > Thanks, > > > > > > > > — > > > > Raul > > > > > > > > > > > > On Tuesday, December 11, 2018, Jose Mario Quintana < > > > > jose.mario.quint...@gmail.com> wrote: > > > > > > > > > It seems to be just academic now. Nevertheless, does your > interpretation > > > > > imply that, > > > > > > > > > > 5" > > > > > 5" > > > > > > > > > > is not "reduced" but, > > > > > > > > > > 5} > > > > > 5} > > > > > > > > > > is "reduced" in the context of shift-reduce parsers? > > > > > > > > > > > > > > > On Mon, Dec 10, 2018 at 10:43 AM Raul Miller < > rauldmil...@gmail.com> > > > > > wrote: > > > > > > > > > > > On Fri, Dec 7, 2018 at 7:53 PM Henry Rich <henryhr...@gmail.com> > > > > wrote: > > > > > > > What Ken meant by "resolve" is not clear to me. > > > > > > > > > > > > I expect he meant what people working with shift-reduce parsers > would > > > > > > call "reduce". (But Ken would not be inclined to call it that, I > > > > > > imagine, because reduce was a similar/different well defined APL > > > > > > operation.) > > > > > > > > > > > > Thanks, > > > > > > > > > > > > -- > > > > > > Raul > > > > > > > ---------------------------------------------------------------------- > > > > > > 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