Thomas Hallgren wrote:
Brian Hulley wrote:


Another thing which causes difficulty is the use of qualified
operators, and the fact that the qualification syntax is in the
context free grammar instead of being kept in the lexical syntax
(where I think it belongs).

You are in luck, because according to the Haskell 98 Report, qualified
names are in the lexical syntax!

http://www.haskell.org/onlinereport/syntax-iso.html

So, C.f is a qualified name, but C . f is composition of the
Constructor C with the function f.

Thanks for pointing this out. Although there is still a problem with the fact that var, qvar, qcon etc is in the context free syntax instead of the lexical syntax so you could write:

       2 `    plus      ` 4
       (    Prelude.+
              {- a comment -} ) 5 6

I think this must have been what was in the back of my mind. To make parsing operator expressions simple (ie LL1), it is necessary to somehow treat ` plus ` as a single lexeme, but by having such a thing in the CFG instead of the lexical grammar, a "lexeme" can then occuply multiple lines (which means you can't associate each line with a list of lexemes for incremental parsing)... Allowing "lexemes" to contain spaces and comments also makes fontification a bit more tricky. Also, I can't see any sense in making such things part of the CFG instead of just keeping them lexical - whoever would want to put spaces in a var, qcon etc? I suppose it's not an impossible problem to solve but it just makes life a lot harder for no good purpose that I can see.

Best regards, Brian.


--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.

http://www.metamilk.com
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to