您如何处理空格和评论?在语法分析阶段通常删除的片段?我想在我正在解析的文档中的任何地方启用注释。是否在我定义的唯一基本解析器中添加了这些选项?

最佳答案

Text.Parsec.Token中完成的方式是让每个 token 都使用空​​格和其后的注释。

这是通过lexeme组合器的帮助完成的:

lexeme p = do { x <- p; whitespace; return x }

运行解析器p,使用它后面的空白并返回返回的任何p

当您查看makeTokenParser (link)的来源时,您会看到许多 token 解析器是使用lexeme组合器包装的,例如:
symbol name
    = lexeme (string name)

使用此方法,lexeme (link)的注释指出,解析器唯一需要显式消耗空白的时间是在输入的开头,以跳过第一个 token 之前的任何空白。

关于haskell - parsec:有没有一种简单的方法可以在语法中的任何地方允许注释/空白?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31702663/

10-10 16:25