* 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.