Парсер
Парсер — хитросракий алгоритм, который принимает в себя размеченные особым образом данные и их затем обрабатывает определённым образом. Иногда парсер применяется для набивания большой и толстой базы данных, иногда для того, чтобы как бы человекпонятный и удобный код преобразовать в потужное визуальное представление.
Так или иначе парсеры, которые радостно делают парсинг, стали применяться буквально повсеместно.
Описание[править]
Понятие парсера возникло вместе с формализацией теории компиляторов и формальных языков. Джон Бэкус и Питер Наур разработали форму Бэкуса-Наура, которая стала стандартным способом описания контекстно-свободных грамматик. Эта нотация широко использовалась для описания синтаксиса языка ALGOL 60.
Первые практические парсеры появились в компиляторах для языков Fortran и ALGOL. Они нужны были для того, чтобы преобразовывать понятные для человека команды в некоторый код, который затем станет исполняться потужной системой, которая может принимать в себя только машинный код. Но как смогли добиться желаемого? В том великая тайна и смысл.
Парсер обычно работает после лексического анализатора, который разбивает входной текст на токены. Парсер анализирует последовательность токенов, вначале проверяя её соответствие грамматике. Если грамматика в сракотане, то понятно, что лучше бы текст не обрабатывать, все равно выйдет хрень. Большинство парсеров работают с контекстно-свободными грамматиками, описываемыми правилами вида A → α, где A — нетерминал, α — цепочка терминалов и нетерминалов. Такие грамматики весьма и весьма широко применяются, и не просто так.
Алгоритмов парсинга довольно много, они отличаются сложностью и достигаемыми возможностями.