logo       

[ ghc-Bugs-978107 ] arrow notation example can't be parsed: msg#00059

lang.haskell.glasgow.bugs

Subject: [ ghc-Bugs-978107 ] arrow notation example can't be parsed

Bugs item #978107, was opened at 2004-06-23 11:11
Message generated for change (Settings changed) made by rosspaterson
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=978107&group_id=8032

Category: Compiler (Parser)
Group: 6.2
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: John Hughes (rjmh)
Assigned to: Nobody/Anonymous (nobody)
Summary: arrow notation example can't be parsed

Initial Comment:
This expression can't be parsed:

bug f g = proc x -> f >>> g -< x

Brackets are needed around f>>>g to get it through the
parser. Can't see any justification for this -- the
documentation suggests any expression is allowed
before -<, and indeed, >>> cannot be confused with a
command operator because f is not a command.

Are you parsing -< as an operator with a precedence
greater than >>>? Hard to see otherwise why this
doesn't parse.

John

----------------------------------------------------------------------

Comment By: Nobody/Anonymous (nobody)
Date: 2004-06-23 13:17

Message:
Logged In: NO

The grammar in the documentation is imprecise. In essence,
this problem is another instance of the old
if/lambda/let/case vs infix ambiguity (complicated because
GHC parses cmd as exp). I was ducking the conflicts by having

cmd ::= fexp -< exp

but I'll change that to

cmd ::= exp0 -< exp

(adding 4 shift/reduce conflicts) because the default
conflict resolution in favour of shift is the sensible thing
here. And I'll fix the documentation.

----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=978107&group_id=8032


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise