summaryrefslogtreecommitdiff
path: root/ghc/compiler/parser/syntax.c
Commit message (Collapse)AuthorAgeFilesLines
* [project @ 1999-06-01 16:40:41 by simonmar]simonmar1999-06-011-791/+0
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* [project @ 1999-01-14 17:58:41 by sof]sof1999-01-141-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Assorted minor Haskell 98 changes: * Maximal munch rule for "--" comments * _ as lower-case letter, "_" is a reserved id. Prefixing unused variable names in patterns with '_' causes the renamer not to report such names as being unused. * allow empty decls * comprehensions are now list comprehensions, not monadic. * use Monad.fail to signal pattern matching errors within do expressions. * remove record punning. * empty contexts are now legal (go wild!) * allow records with no fields * allow newtypes with a labelled field * default default is now (Integer, Double) * turn off defaulting mechanism for args & res to a _ccall_. * allow LHSs of the form (a -.- b) x = ... * Main.main can now have type (IO a) * nuked Void (and its use in the compiler sources.) * deriving machinery for Enum now also generate 'succ' and 'pred' method bindings.
* [project @ 1998-12-18 17:40:31 by simonpj]simonpj1998-12-181-25/+36
| | | | | | | | | | | | | | | | | | | | | Another big commit from Simon. Actually, the last one didn't all go into the main trunk; because of a CVS glitch it ended up in the wrong branch. So this commit includes: * Scoped type variables * Warnings for unused variables should work now (they didn't before) * Simplifier improvements: - Much better treatment of strict arguments - Better treatment of bottoming Ids - No need for w/w split for fns that are merely strict - Fewer iterations needed, I hope * Less gratuitous renaming in interface files and abs C * OccName is a separate module, and is an abstract data type I think the whole Prelude and Exts libraries compile correctly. Something isn't quite right about typechecking existentials though.
* [project @ 1998-12-02 13:17:09 by simonm]simonm1998-12-021-0/+9
| | | | Move 4.01 onto the main trunk.
* [project @ 1998-06-08 11:45:09 by simonpj]simonpj1998-06-081-1/+42
| | | | (a) FloatIn idSpecVars bug [DoCon] (b) Generalise superclasses
* [project @ 1997-05-26 04:24:36 by sof]sof1997-05-261-8/+14
| | | | labelled field fixes
* [project @ 1997-05-19 00:12:10 by sof]sof1997-05-191-0/+1
| | | | 2.04 changes
* [project @ 1997-03-14 07:52:06 by simonpj]simonpj1997-03-141-1/+22
| | | | Major update to more-or-less 2.02
* [project @ 1997-01-17 00:32:23 by simonpj]simonpj1997-01-171-8/+9
| | | | Cross module worker-wrappers
* [project @ 1996-04-07 15:41:24 by partain]partain1996-04-071-161/+143
| | | | Sansom 1.3 changes through 960407
* [project @ 1996-03-19 08:58:34 by partain]partain1996-03-191-0/+720
simonpj/sansom/partain/dnt 1.3 compiler stuff through 96/03/18