and*_*ens 2 haskell parsec mustache
我在解析胡子模板时遇到Parsec识别注释的问题.
各种胡子标签都以{{包括块注释({{!comment}})开头.我已经设置commentStart和commentEnd来{{!和}}我TokenParser.
每当我向模板添加注释时,Parsec都会抱怨注释是意外的.
它需要一个胡子变量,因为这是唯一匹配的标记{{.
Parsec什么时候删除评论?我认为它会在源命中我的解析器之前发生?
Parsec不会删除评论.在a中TokenParser,注释包含在空格下,所以
whiteSpace tokenParser
Run Code Online (Sandbox Code Playgroud)
跳过评论和普通的空白区域(空格,制表符,换行符,...).
通常,您使用lexeme parser跳过lexeme后面的所有空格,然后您只需要一个初始的空白空间跳过,以便顶级解析器跳过源中的任何前导空格,之后,所有空格(包括注释)都是自动处理(通过TokenParser该makeTokenParser创建).
如果您不lexeme手动使用和处理空格,则必须注意作为注释分隔符前缀的标记/词位.如果您首先尝试前缀,那将成功,但只消耗部分注释分隔符,在这种情况下,将保留'!'变量解析器,然后失败.