Ich habe ein einfachen Daten mit Linien analysieren gesetzt wie folgt aus:PyParsing: Ist es möglich, alle Literale global zu unterdrücken?
R1 (a/30) to R2 (b/30), metric 30
Die einzigen Daten, die ich aus der oben muß, sind wie folgt:
R1, a, 30, R2, 192.168.0.2, 30, 30
ich leicht alle diese analysieren kann mit pyparsing, aber ich entweder am Ende mit einer Reihe von Literalen in meiner Ausgabe, oder ich muss speziell sagen, Literal(thing).suppress()
in meiner Parsing-Grammatik, die ermüdend wird.
Idealerweise würde Ich mag eine Grammatik für die oben schreiben wie:
Word(alphanums) + '(' + Word(alphanums) + '/' + Word(nums) + ... etc.
und habe die wörtlichen Token ignoriert erhalten. Kann ich etwas wie .suppressAllLiterals()
sagen?
Hinweise:
- neu PyParsing
- Ich habe
- google gesucht, die Dokumentation und 5 oder 6 Beispiele lesen
Dank!
Hallo @ Paul, danke für die Antwort! Ich habe es ausprobiert - es scheint, dass es für Strings verwendet wird, die inline verwendet werden (zB 'pp.Word (...) + 'somestring' + pp.Word (...)') und nicht für Dinge, die bereits vorhanden sind wurde als pp.Literal Token versehen (zB wenn ich '‚somestring‘ersetzt' mit 'myLiteral'). Diese kleinen Änderung viel mit der Grammatik Klarheit geholfen. nochmals vielen Dank für die Zeit nehmen, sehr geschätzt. –
natürlich , Sie können immer '' Suppress (myLiteral) 'oder nur' myLiteral.suppress() 'auch umbrechen. – PaulMcG
Sie können auch ein unterdrücktes Literal mit' Suppress ("blah") 'erstellen, und die Suppress-Klasse erstellt das Literal für Du. – PaulMcG