| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit replaces the old yacc parser with a Happy-generated one.
Notes:
- The generated .hs file is *big*. Best to use a recent
version of Happy, and even better to add the -c flag
to use unsafeCoerce# with ghc (versions 4.02+ please).
- The lexer has grown all sorts of unsightly growths and
should be put down as soon as possible.
- Parse errors may result in strange diagnostics. I'm looking
into this.
- HsSyn now contains a few extra constructors due to the way
patterns are parsed as expressions in the parser.
- The layout rule is implemented according to the Haskell
report. I found a couple of places in the libraries where
we previously weren't adhering to this - in particular the
rule about "nested contexts must be more indented than
outer contexts". The rule is necessary to disambiguate
in the presence of empty declaration lists.
|