Czasami pojawia się problem napisania małego, inteligentnego skryptu, który rozumie jakąś wbudowaną gramatykę, czyli z minijęzykiem w środku. Pierwotnie napisałem minimalną implementację jq w bash. Ale im więcej „sprytu” tam dodano, tym trudniej było wdrożyć rekurencyjne analizowanie podwyrażeń. Byłem tym tak zmęczony, że poproszono mnie o napisanie najpierw kompilatora LARL(1) yacc (pre-bison) w celu wygenerowania skryptu basha, a następnie, jak w zegarku, otrzymałem bardzo podobny do oryginału i dobry kod testowy dla yacc_bash.c mini-jq w bash.
Artykuł w całości:
Źródło: linux.org.ru