Подтвердить что ты не робот

Что такое разбор паркета?

Я знаю и использую bison/yacc. Но в разборе мира много шума вокруг разбора паркета.

Что это? Стоит ли изучать?

4b9b3361

Ответ 1

Разбор Packrat - это способ предоставления асимптотически более высокой производительности для синтаксического анализа грамматических выражений (PEG); специально для PEGs, линейное время может быть гарантирован.

По сути, разбор Packrat просто означает кеширование, совпадают ли подвыборки в текущей позиции в строке при их тестировании - это означает, что если текущая попытка вставить строку в выражение не удалась, тогда попытки установить другие возможные выражения может выиграть от известного прохода/отказа подвыражений в точках в строке, где они уже были протестированы.

Ответ 2

Pyparsing - это чистая библиотека Python, которая поддерживает разбор пакетов, поэтому вы можете видеть, как это происходит. Pyparsing использует метод memoizing для сохранения предыдущих попыток синтаксического анализа для определенного выражения грамматики в определенном месте во входном тексте. Если грамматика включает повторение того же выражения в этом месте, она пропускает дорожную логику синтаксического анализа и просто возвращает результаты или исключение из memoizing cache.

Здесь есть дополнительная информация на Страница часто задаваемых вопросов википики pyparsing, которая также включает ссылки на Bryan Ford оригинальная тезисы по разбору пакетов.