Многие распространенные инструменты генератора синтаксических анализаторов, такие как ANTLR, Lex / YACC, разделяют синтаксический анализ на две фазы: во-первых, входная строка маркируется.Во-вторых, токены объединяются в производственные процессы для создания конкретного синтаксического дерева.
Однако существуют альтернативные методы, которые не требуют токенизации: проверьте возврат парсеры рекурсивного спуска .Для такого синтаксического анализатора токены определяются аналогично не токенам. pyparsing является генератором парсера для таких парсеров.
Преимущество двухэтапной техники состоит в том, что она обычно производит более эффективные парсеры - с токенами, намного меньше манипуляций со строками, stringпоиск и обратное отслеживание.
Согласно "The Definitive ANTLR Reference" (Terence Parr),
Единственное различие между [лексерами и парсерами] состоит в том, что парсер распознает грамматическую структуру впоток токенов, в то время как лексер распознает структуру в потоке символов.