[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to change default outcome of shift/reduce conflict?
From: |
Anthony DeRobertis |
Subject: |
Re: How to change default outcome of shift/reduce conflict? |
Date: |
Tue, 15 Jan 2002 16:35:38 -0500 |
On Tuesday, January 15, 2002, at 09:27 AM, Hans Aberg wrote:
Do you understand you right, that you have not the actual
HyperTalk grammar
given, but try to fix it up, to your perception of the match
the HyperTalk
language?
I would LOVE to have a good grammar for HyperTalk. However, all
I've got is two things: First, a book called the Script Language
Guide which is a worse source for writing an interpreter than
using a "C For Dummies" book would be for writing a C compiler.
Second, I have a reference implementation to play with.
So, I have to write my own grammar from the horribly inaccurate
book and observations of how HyperCard (the reference
implementation) actually works.
So, when I say one way is correct, it's because thats the way
HyperCard does it.
Someone has put together a BNF grammar which I'm not sure is
legal (at quick glance, it is ambiguous), but even if it weren't
I'm not sure of its copyright status and seriously doubt the
translation to LALR(1) would be trivial:
http://www.jaedworks.com/hypercard/scripts/hypertalk-bnf.html
answer_statement: ANSWER expr answer_btn_list
...
answer_btn_list: WITH answer_btn_list_oneplus
| /* empty */
answer_btn_list_oneplus: answer_btn_list_oneplus OR expr
| expr %prec PSEUDO_MAX
expr contains a lot of things, expr OR expr is one of them.
This is what looks wrong to me: That both
answer_btn_list_oneplus and expr
contains OR.
Yes, that's correct. They have to -- it means two different
things. Compare it to calling a C function where you can
certainly do:
answer(a || b, c, d || e).
In HyperTalk "||" becomes "or". Unfortunately, in the case of
answer's button list, "," also becomes "or". So:
answer ... with (a or b) or c or (d or e)
The second point is that in order to avoid parsing conflicts in
answer_statement, it should normally have a terminator:
answer_statement -> ANSWER expr answer_btn_list "."
It does, it's just in statement where it has newline as a
terminator. I've clipped a lot of the grammar as it is over 400
lines and growing. Though a lot of that 400 lines is support
code and comments.
- Re: How to change default outcome of shift/reduce conflict?, (continued)
- Re: How to change default outcome of shift/reduce conflict?, Anthony DeRobertis, 2002/01/14
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/14
- Re: How to change default outcome of shift/reduce conflict?, Anthony DeRobertis, 2002/01/14
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/14
- Re: How to change default outcome of shift/reduce conflict?, Anthony DeRobertis, 2002/01/15
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/15
- Re: How to change default outcome of shift/reduce conflict?,
Anthony DeRobertis <=
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/15
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/15
- Re: How to change default outcome of shift/reduce conflict?, Anthony DeRobertis, 2002/01/16
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/16
- Re: How to change default outcome of shift/reduce conflict?, Akim Demaille, 2002/01/17
- Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/17
- Message not available
- Re: [FC-general] Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/15
- Re: [FC-general] Re: How to change default outcome of shift/reduce conflict?, Tim Van Holder, 2002/01/15
- Re: [FC-general] Re: How to change default outcome of shift/reduce conflict?, Hans Aberg, 2002/01/15
- Re: How to change default outcome of shift/reduce conflict?, Akim Demaille, 2002/01/13