[Alex] Feature request: Create a customizable state monad AlexState

Hi, In Alex, very often I need to include elements in the basic monad of the wrapper ALEX_MONAD. For instance if I want to record the level of a comment, or a list of the comments. Several years ago I hacked the file wrapper.hs to include my own elements, by defining another entry point: #ifdef ALEX_MONAD data AlexState = AlexState { alex_pos :: !AlexPosn, -- position at current input location alex_inp :: String, -- the current input alex_chr :: !Char, -- the character before the input alex_scd :: !Int -- the current startcode */#ifdef ALEX_MONAD_USER_STATE , alex_ust :: AlexUserState -- defined in the user program #endif /* } and runAlex :: String -> Alex a -> Either String a runAlex input (Alex f) = case f (AlexState {alex_pos = alexStartPos, alex_inp = input, alex_chr = '\n', */#ifdef ALEX_MONAD_USER_STATE alex_ust = alexInitUserState, #endif /* alex_scd = 0}) of Left msg -> Left msg Right ( _, a ) -> Right a This way I can define my own elements, and initialize them. Now I'd like to have this change integrated in the development tree. Has anyone another idea as how to obtain the same result (knowing that now there are 2 variants, whith normal chars and with bytestrings) ? How would other Alex users do that ? Thanks, Alain
participants (1)
-
Alain Cremieux