2017-06-29 2 views
0

Der beste Weg, alle Zeichen außer nur einige zu analysieren, ist noneOf combinator zu verwenden, ist es nicht Leider nicht, wenn ich es in der folgenden Art und Weise kombinieren:Wie werden viele Zeichen außer wenigen in den Klammern analysiert?

Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\\']) "()" 

Err ((),{ data = "()", input = "", position = 2 },["expected \")\""]) 
: Result.Result 
    (Combine.ParseErr()) (Combine.ParseOk() (List Char)) 

Antwort

1

Ihre Nutzung von noneOf Ergebnissen in diesem Parser raubend alle Zeichen einschließlich die schließende Klammer. Da der innere Teil den schließenden Paren verbraucht, wird der Combine.parens Parser den schließenden Paren nicht sehen. Sie müssen veranlassen, dass der many <| noneOf ...-Parser bei einer schließenden Klammer angehalten wird.

Betrachten Sie die schließenden Klammer in die Liste der Zeichen in noneOf fügte hinzu:

Combine.parse (Combine.parens <| Combine.many <| Combine.Char.noneOf ['"', '\\', ')']) "()" 
Verwandte Themen