Noen ganger oppstår det et problem med å skrive et lite smart skript som forstår en innebygd grammatikk, det vil si med et minisil i seg. I utgangspunktet skrev jeg en minimal implementering av jq på bash. Men jo mer "smarte" funksjoner som ble lagt til, desto vanskeligere ble det å implementere rekursiv analyse av deluttrykk. Dette ble så irriterende at det inspirerte meg til først å skrive en LARL(1) yacc (pre-bison) kompilator for å generere bash-skript, og deretter, som en lek, fikk jeg til en kode som lignet mye på originalen, samt en god sjekkekode for yacc_bash.c mini-jq på bash.
Hele artikkelen:
Kilde: linux.org.ru
