gpt4 book ai didi

haskell - Parsec 不识别 block 注释

转载 作者:行者123 更新时间:2023-12-04 06:24:55 24 4
gpt4 key购买 nike

我在解析 mustache 模板时遇到 Parsec 识别注释的问题。
各种 mustache 标签都以 {{ 开头,包括 block 注释 ({{!comment}})。我已在我的 TokenParser 中将 commentStart 和 commentEnd 设置为 {{!}}
每当我向模板添加注释时,Parsec 都会提示注释是意外的。
它需要一个 mustache 变量,因为这是唯一匹配 {{ 的标记。

Parsec 什么时候删除评论?我认为它会在源到达我的解析器之前发生吗?

最佳答案

Parsec 不会删除评论。在 TokenParser 中,注释被归入空白,所以

whiteSpace tokenParser

跳过注释和普通空白(空格、制表符、换行符……)。

通常,您使用lexeme parser 来跳过一个lexeme 之后的所有空格,那么您只需要一个初始的white-space-skipping 就可以让顶级解析器跳过任何前导空格source,之后,所有空白(包括注释)都自动处理(由 makeTokenParser 创建的 TokenParser)。

如果您不使用 lexeme 并手动处理空白,则必须处理作为注释定界符前缀的标记/词素。如果您先尝试前缀,那会成功,但只使用部分注释定界符,在这种情况下,将 '!' 留给变量解析器,然后失败。

关于haskell - Parsec 不识别 block 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com