La miscelazione del lexer e delle fasi di parsing in una fase a volte rende i parser Parsec meno leggibili ma li rallenta. Una soluzione è usare Alex come tokenizer e poi Parsec come parser del token stream.Esiste un haskell EDSL per scrivere i lexer?
Questo va bene, ma sarebbe ancora meglio se potessi sbarazzarmi di Alex perché aggiunge una fase di pre-elaborazione nella pipeline di compilazione, non si integra bene con gli "IDE" haskell, ecc. Mi chiedevo se ci fosse una cosa come haskell EDSL per descrivere i tokenizer, molto nello stile di Alex, ma come una libreria.
Questa è una domanda che ho cercato in come di ritardo, ma ci sono stati niente che abbia veramente visto. Sto immaginando forse un EDS RegEx da cui creiamo un tokenizer senza tag (:: [RegEx] -> String -> [String]). –
Potrei trovare una soluzione rapida usando qualsiasi libreria di espressioni regolari cercando di far corrispondere la stringa corrente ad ogni regexp, ma perderei molte ottimizzazioni di Alex a causa della sua conoscenza dell'insieme di tutte le espressioni regolari. –