我将如何创建一个解析器,它允许一个字符也恰好与开始/结束字符相同。使用以下示例:
'Isn't it hot'
第二个单引号应该被接受作为开始和结束单引号之间的内容的一部分。我创建了一个这样的解析器:
char("'").seq((word()|char("'")|whitespace()).plus()).seq(char("'"))
但它失败了:
Failure[1:15]: "'" expected
如果我使用 "any()|char("'") 那么它会贪婪地消耗结束单引号,从而导致错误。
我需要创建一个实际的语法类吗?我试图创建一个,但不知道如何制作一个不会贪婪地消耗结束标记的解析器。