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.

È stato utile?

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".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top