PyParsing: Что действительно Объединяется (), делают?

Что является различием между:

foo = TOKEN1 + TOKEN2

и

foo = Combine(TOKEN1 + TOKEN2)

Спасибо.

ОБНОВЛЕНИЕ: На основе моего экспериментирования это походит Combine() для терминалов, где Вы пытаетесь создать выражение для соответствия на, тогда как плоскость + для нетерминалов. Но я не уверен.

5
задан Nick Heiner 30 May 2010 в 21:57
поделиться

1 ответ

Combine имеет 2 эффекта:

  • он объединяет все лексемы в одну строку

  • он требует, чтобы все совпадающие лексемы были соседними без промежуточных пробелов

Если вы создадите выражение типа

realnum = Word(nums) + "." + Word(nums)

Тогда realnum.parseString("3.14") вернет список из 3 лексем: ведущей '3', '.' и последующей '14'. Но если вы обернете это в Combine, как в:

realnum = Combine(Word(nums) + "." + Word(nums))

то realnum.parseString("3.14") вернет '3.14' (которое затем можно преобразовать в float с помощью действия разбора). А поскольку Combine подавляет стандартный пропуск пробелов между лексемами в pyparsing, вы не найдете случайно "3.14" в "Ответ - 3. 14 - следующий ответ."

.
14
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: