Երբեմն խնդիր է առաջանում գրել մի փոքրիկ խելացի սցենար, որը հասկանում է որոշ ներկառուցված քերականություն, այսինքն՝ ներսում մինի լեզվով: Ես ի սկզբանե գրել էի jq-ի նվազագույն իրականացումը bash-ում: Բայց որքան ավելի շատ «խելացիություն» ավելացվեց այնտեղ, այնքան ավելի դժվար էր իրականացնել ենթաարտահայտությունների ռեկուրսիվ վերլուծություն: Ես այնքան հոգնած էի դրանից, որ ինձ հուշեցին նախ գրել LARL(1) yacc (նախաբիզոն) կոմպիլյատորը՝ bash սցենար ստեղծելու համար, իսկ հետո, ինչպես ժամացույցի մեխանիզմը, ստացա բնօրինակին շատ նման և լավ թեստային կոդ: yacc_bash.c mini-jq-ի համար bash-ում:
Ամբողջական հոդվածը.
Source: linux.org.ru