Иногда возникает проблема написать небольшой умный скрипт, понимающий некую встроенную грамматику, то есть с миниязыком внутрях. Изначально я написал минимальную реализацию jq на bash. Но чем больше добавлялось туда «умности», тем труднее приходилось реализовывать рекурсивный разбор подвыражений. Это так надоело, что сподвигло написать вначале компилятор LARL(1) yacc (pre-bison) для генерации bash-скрипта, а потом как по маслу получился весьма похожий на оригинал и хороший проверочный код для yacc_bash.c мини-jq на bash.
Статья полностью:
>>> Подробности