如何解析除括号中的少数字符外的许多字符?
How to parse many characters except few in the parentheses?
解析除少数字符外的任何字符的最佳方法是使用 noneOf
组合器,
不幸的是,如果我按以下方式组合它,它就不起作用:
Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\']) "()"
Err ((),{ data = "()", input = "", position = 2 },["expected \")\""])
: Result.Result
(Combine.ParseErr ()) (Combine.ParseOk () (List Char))
您使用 noneOf
会导致解析器消耗所有字符 ,包括 右括号。由于内部部分使用右括号,Combine.parens
解析器将看不到右括号。您需要使 many <| noneOf ...
解析器在右括号处停止。
考虑将右括号添加到 noneOf
中的字符列表:
Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\', ')']) "()"
解析除少数字符外的任何字符的最佳方法是使用 noneOf
组合器,
不幸的是,如果我按以下方式组合它,它就不起作用:
Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\']) "()"
Err ((),{ data = "()", input = "", position = 2 },["expected \")\""])
: Result.Result
(Combine.ParseErr ()) (Combine.ParseOk () (List Char))
您使用 noneOf
会导致解析器消耗所有字符 ,包括 右括号。由于内部部分使用右括号,Combine.parens
解析器将看不到右括号。您需要使 many <| noneOf ...
解析器在右括号处停止。
考虑将右括号添加到 noneOf
中的字符列表:
Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\', ')']) "()"