Hi Davide,
my recherche towards
"canonical grammar"
Informal grammar: the book, "Smalltalk, the language (Goldberg, Robson), 1989" provided graphic diagrams of the grammar in the inner envelop of the book. There super is (a reserved) identifier, thus an expression, a valid part of the bracketted expression.
Formal grammar: ANSI Standard 1998, provides EBNF rules, there super -> identifier -> primary -> expression -> ( expression ).
So (super) is correct syntax and the current implementation correctly represents that.
"canonical parser"
As the code then was hidden (but similar to the current implementation) there are some indications that it the model was potentially generated with tool assistance, but not with a tool in the line of a LALR / LR generator family, perhaps LL help was involved.
And I repeat, handling the grammar is/was correct.
Even if a tool provided the framework of the model, realising actions in grammar rules, that is/was written by hand.
The model in
EsParsing follows the standard and accepts even this case, however in
drawing its conclusions (evaluation of attributes of the grammar) it
fails: the WB stems from missing code in an unlikely constellation.
It does not erroneously claiming an syntax error, it simply crashes to evaluate an attribute which was not propagated in all cases.
Thus providing the missing method (as suggested by me) closes the gap, saving code completes and the compiled method works correctly.
History: this code already failed exactly in the same way in Visual Age 5.0 dated 1999.
The code then was hidden, the timestamp indicating code was created in 1996.
It is likely that the code originates from OTI Envy ST, even before being overtaken by IBM.
I did not go back further, eg. to look into Envy 3.0 (1993-4?) , the earliest version I have potential access to.
As I am cleaning up my archive I felt it is time to publish this before being lost.
-
Marcus