我正在用Haskell为Alex写一个小语言词法分析器.
指定语言具有pythonesque显着缩进,每当缩进级别更改时都会发出INDENT标记或DEDENT标记.
在像C这样的传统命令式语言中,你会在词法分析器中保持全局,并使用每行的缩进级别对其进行更新.
这在Alex/Haskell中不起作用,因为我无法在Haskell的任何地方存储任何全局数据,并且我不能将所有的lexing规则放在任何monad或任何东西中.
那么,我该怎么做呢?它甚至可能吗?或者我是否必须编写自己的词法分析器并避免使用alex?