haskell / happy

The Happy parser generator for Haskell
Other
276 stars 85 forks source link

Old TODO #208

Open Ericson2314 opened 2 years ago

Ericson2314 commented 2 years ago

This was the contents of the old TODO file. We should triage these at some point and put in their own issues.

* happyError should take the current token as an argument in %lexer mode;
  it's silly not to, because it means the monad has to keep track of the
  previous token in order to report it in the error message.

* BUG in error handling without %lexer: see tests/ParGF.y

* allow polymorphic type signatures for productions.
* allow omitted semnatic values, defaulting to $1?

* unlit properly

* maintain indentation in code between { } so that layout works.

-OLD-------------------------------------------------------------------------

1. Add in a simple lexical analyser

2. Add in choice for lexical analyis

%lexerstyle original        -- the default
%lexerstyle auto    
%lexerstyle monadic

---[1] :: [Token] -> a ---------------------------------------------------------

 As things are now :-(

---[2] :: String -> a ----------------------------------------------------------

 Using the special lexer, as defined using

  %macro letter     ( [A-Z][a-z] )
  %autotoken
    id      ( {letter}({digit}|{letter}) )

---[3] :: ParseM Token -> ParseM a ---------------------------------------------

    This presumes the exsitance of the defintions:

    type ParseM a b c = a -> ParseR a b
    data ParseR a b c = ParseSucc a b | ParseFail c
    thenPM :: a -> ParseM a b c
    returnPM :: ParseM a b c -> (a -> ParseM d b c) -> ParseM d b c -> 

    and is intended for *serious* parsers, like our Haskell parser.

    You need to give a %eof 

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

******************************************************************************

ToAdd:

    --magic-name Sad

    allows other names to be used as the *Magic* name, currently
    only Happy.