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

Reply via email to