1* happyError should take the current token as an argument in %lexer mode; 2 it's silly not to, because it means the monad has to keep track of the 3 previous token in order to report it in the error message. 4 5* BUG in error handling without %lexer: see tests/ParGF.y 6 7* allow polymorphic type signatures for productions. 8* allow omitted semnatic values, defaulting to $1? 9 10* unlit properly 11 12* maintain indentation in code between { } so that layout works. 13 14-OLD------------------------------------------------------------------------- 15 161. Add in a simple lexical analyser 17 182. Add in choice for lexical analyis 19 20%lexerstyle original -- the default 21%lexerstyle auto 22%lexerstyle monadic 23 24---[1] :: [Token] -> a --------------------------------------------------------- 25 26 As things are now :-( 27 28---[2] :: String -> a ---------------------------------------------------------- 29 30 Using the special lexer, as defined using 31 32 %macro letter ( [A-Z][a-z] ) 33 %autotoken 34 id ( {letter}({digit}|{letter}) ) 35 36---[3] :: ParseM Token -> ParseM a --------------------------------------------- 37 38 This presumes the exsitance of the defintions: 39 40 type ParseM a b c = a -> ParseR a b 41 data ParseR a b c = ParseSucc a b | ParseFail c 42 thenPM :: a -> ParseM a b c 43 returnPM :: ParseM a b c -> (a -> ParseM d b c) -> ParseM d b c -> 44 45 and is intended for *serious* parsers, like our Haskell parser. 46 47 48 You need to give a %eof 49 50----------------------------------------------------------------------------- 51 52****************************************************************************** 53 54ToAdd: 55 56 --magic-name Sad 57 58 allows other names to be used as the *Magic* name, currently 59 only Happy. 60