在解析胡子模板时,我遇到了Parsec识别注释的问题。
各种八字胡标签都以{{开头,包括块注释({{!comment}})。我已经在我的TokenParser中将commentStart和commentEnd设置为{{!和}}。
每当我向模板添加注释时,Parsec都会抱怨该注释是意外的。
相反,它需要一个mustache变量,因为这是唯一与{{匹配的标记。
Parsec何时删除注释?我以为它会在源代码命中我的解析器之前发生?
发布于 2013-01-08 23:02:20
Parsec不会删除注释。在TokenParser中,注释包含在空格中,因此
whiteSpace tokenParser跳过注释和普通空白(空格、制表符、换行符等)。
通常,使用lexeme parser跳过词位后面的所有空格,然后只需要一个初始空格跳过顶级解析器跳过源中任何前导空格,之后,所有空格(包括注释)都会自动处理(由makeTokenParser创建的TokenParser处理)。
如果不使用lexeme并手动处理空白,则必须注意作为注释分隔符前缀的标记/词位。如果您首先尝试使用前缀,将会成功,但只使用了注释分隔符的一部分,在本例中将'!'留给变量解析器,然后解析器将失败。
https://stackoverflow.com/questions/14217231
复制相似问题