help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to change default outcome of shift/reduce conflict?


From: Hans Aberg
Subject: Re: How to change default outcome of shift/reduce conflict?
Date: Wed, 16 Jan 2002 20:41:22 +0100

Anthony DeRobertis wrote:
>Well, they have:
>
>answer
>   <expr> [with <factor> [or <factor> [or <factor>]]]
>
>Now, what is a factor? I quote:
>
>"<factor>  is the first fully resolvable portion of an
>expression. Factors are covered in detail in Chapter 9 of
>HyperTalk 2.2: The Book."

I plugged in this grammar into Bison, which is un-ambiguous:

%token ANSWER, WITH, STUFF
%token LP "("
%token RP ")"
%left OR

%%

answer:
   ANSWER expression
 | ANSWER expression WITH factor_list

factor_list:
    factor
  | factor_list OR factor

expression:
    factor
  | expression OR expression

factor:
    STUFF
  | "(" expression ")"

%%

(And you can exclude the rule answer -> ANSWER expression.)

Does that not capture what you want?

>This language is very weakly typed. So I don't know at parse
>time the type of a variable, or for that matter that it is a
>variable... could just be an unquoted string.

You would have to semantics on the expressions in order to be able to check
whether it is a list or something else, just as an implementation technique.

>I believe HyperCard --- the reference implementation --- uses a
>hand-written recursive descent parser. Or at least I've heard
>rumors to the effect. So I get to hold out some hope.

It is probably LL(1) then (modulo tweaks), which => LALR(1), which Bison
implements. So you should be able to get it into Bison.

  Hans Aberg





reply via email to

[Prev in Thread] Current Thread [Next in Thread]