گاهی اوقات مشکل از نوشتن یک اسکریپت هوشمند کوچک است که مقداری گرامر داخلی را درک می کند، یعنی با یک زبان کوچک در داخل. من در ابتدا یک پیاده سازی حداقلی از jq را در bash نوشتم. اما هرچه "هوشمندی" بیشتر به آنجا اضافه می شد، پیاده سازی تجزیه بازگشتی عبارات فرعی دشوارتر بود. من آنقدر از این موضوع خسته شده بودم که از من خواسته شد ابتدا کامپایلر LARL(1) yacc (pre-bison) را بنویسم تا یک اسکریپت bash تولید کنم، و سپس، مانند ساعت، یک کد بسیار شبیه به اصلی و یک کد تست خوب دریافت کردم. برای yacc_bash.c mini-jq در bash.
مقاله به طور کامل:
منبع: linux.org.ru