Für die folgende Parslet ParserParslet Parsen Nicht ganze Reihe
require 'parslet'
require 'parslet/convenience'
class Lines < Parslet::Parser
rule(:open_tag) {str('[')}
rule(:close_tag) {str(']')}
rule(:data) {str('name') | str('name_id') }
rule(:text) { open_tag >> data >> close_tag }
root :text
end
begin
p Lines.new.parse("[name_id]") <---- It throws error
rescue Parslet::ParseFailed => failure
Lines.new.parse_with_debug("[name_id]")
end
gibt es folgende Fehler
Failed to match sequence (OPEN_TAG NAME CLOSE_TAG) at line 1 char 6.
`- Expected "]", but got "_" at line 1 char 6.
Wenn ich data rule
von
rule(:data) {str('name') | str('name_id') }
zu
rule(:data) {str('name_id') | str('name') }
012 ändern
dann funktioniert es wie erwartet.
Aber ich erzeuge Regeln dynamisch basierend auf Benutzereingaben. Also diese Lösung wird nicht für mich arbeiten.
Vielen Dank im Voraus.
Ich denke, ich brauche mehr Informationen darüber, was Ihr Gesamtziel ist. Ich kann viele Probleme mit dem Generieren eines Parsers basierend auf Benutzereingaben vorhersehen. –