Thank Heavens Ken and Roger avoided all those APL glyphs Mike
> On 14 Dec 2018, at 16:08, Raul Miller <[email protected]> wrote: > > I think this might be at least partially a font issue. > > If I am reading your current message right, I probably read 5” as 5’’ > > And, in the environment I am currently working in (thank you Apple): > > (a) those two expressions look identical, and > > (b) I cannot experiment to determine if what’s in my message compose buffer > matches what I typed in. > > So... just in case: for the first 5” here, I used a quote character. And, > for the second, I used two apostrophes. > > :/ > > — > Raul > > On Thursday, December 13, 2018, Jose Mario Quintana < > [email protected]> wrote: > >> 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 <[email protected]> >> 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 <[email protected]> >>> 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 >>>> <[email protected]> wrote: >>>>> >>>>> Why? Can you elaborate? >>>>> >>>>> On Wed, Dec 12, 2018 at 10:07 AM Raul Miller <[email protected]> >>> wrote: >>>>> >>>>>> Yes. >>>>>> >>>>>> Thanks, >>>>>> >>>>>> — >>>>>> Raul >>>>>> >>>>>> >>>>>> On Tuesday, December 11, 2018, Jose Mario Quintana < >>>>>> [email protected]> 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 < >>> [email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> On Fri, Dec 7, 2018 at 7:53 PM Henry Rich < >> [email protected]> >>>>>> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
