yacc (նախաբիզոն) վերլուծիչ bash սցենարով: jq-ի իրականացում բաշում

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

Ամբողջական հոդվածը.

Source: linux.org.ru

Добавить комментарий