Pyparding: Что делает комбинат ()?
Вопрос
В чем разница между:
foo = TOKEN1 + TOKEN2
а также
foo = Combine(TOKEN1 + TOKEN2)
Спасибо.
ОБНОВИТЬ: На основе моих экспериментов, похоже, Combine()
для терминалов, где вы пытаетесь построить выражение, чтобы соответствовать, тогда как равнина +
для нехваток. Но я не уверен.
Решение
Объединение имеет 2 эффекта:
это объединяет все токены в одну строку
Требуется соответствующие токены, чтобы все были смежными без промежуточного пробела
Если вы создаете выражение, как
realnum = Word(nums) + "." + Word(nums)
потом realnum.parseString("3.14")
Вернется в список из 3 токенов: ведущий «3», «.» и трейлинг «14». Но если вы оберните это в комбинате, как в:
realnum = Combine(Word(nums) + "." + Word(nums))
тогда realnum.parseString("3.14")
вернутся '3.14' (который вы могли бы преобразовать в поплавок, используя действие анализа). А поскольку комбайн подавляет пробел по умолчанию Pyparding по умолчанию между токенами, вы не будете случайно найти «3.14» в «Ответе 3. 14 - это следующий ответ».