Às vezes, surge o problema de escrever um pequeno script inteligente que compreenda uma determinada gramática embutida, ou seja, com uma mini-linguagem interna. Inicialmente, escrevi uma implementação mínima do jq em bash. Mas à medida que mais 'inteligência' era adicionada, tornou-se mais difícil realizar a análise recursiva de subexpressões. Isso me deixou tão cansado que me levou a escrever primeiro um compilador LARL(1) yacc (pre-bison) para gerar scripts bash, e depois, como um passe de mágica, surgiu um código de verificação bastante semelhante ao original para yacc_bash.c, mini-jq em bash.
Artigo completo:
Fonte: linux.org.ru
