PyParsing: Cosa significa Combine () fare?
Domanda
Qual è la differenza tra:
foo = TOKEN1 + TOKEN2
e
foo = Combine(TOKEN1 + TOKEN2)
Grazie.
Aggiorna : Sulla base della mia sperimentazione, sembra che Combine()
è per i terminali, in cui si sta cercando di costruire un'espressione per abbinare su, mentre +
pianura è per i non-terminali. Ma non sono sicuro.
Soluzione
Unire ha 2 effetti:
-
si concatena tutti i gettoni in una singola stringa
-
richiede i token corrispondenti a tutti essere adiacenti senza spazi
intervenendo
Se si crea un'espressione come
realnum = Word(nums) + "." + Word(nums)
Poi realnum.parseString("3.14")
restituirà un elenco di 3 gettoni: '' leader '3', the, e il finale '14'. Ma se si avvolgono questo in Combina, come in:
realnum = Combine(Word(nums) + "." + Word(nums))
allora realnum.parseString("3.14")
tornerà '3.14' (che si potrebbe poi convertire in un galleggiante utilizzando un'azione parse). E dal momento che sopprime Combine predefinita spazi per saltare tra i token di pyparsing, non si accidentalmente trovato "3.14" in "La risposta è 3. 14 è la risposta successiva".