Вопрос

В чем разница между:

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 - это следующий ответ».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top