{"id":34906,"date":"2019-10-31T22:01:11","date_gmt":"2019-10-31T19:01:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash\/"},"modified":"2019-10-31T22:01:11","modified_gmt":"2019-10-31T19:01:11","slug":"yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/news\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash","title":{"rendered":"yacc (pre-bison) parser in bash-script. Implementatie van jq op bash","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Soms is er een probleem om een klein slim script te schrijven dat een bepaalde ingebouwde grammatica begrijpt, dat wil zeggen een mini-taal van binnenuit. Aanvankelijk schreef ik een minimale implementatie van jq in bash. Maar naarmate er steeds meer 'slimheid' aan werd toegevoegd, werd het steeds moeilijker om de recursieve parsing van subexpressies te implementeren. Dit werd zo vervelend dat ik me gedwongen voelde om eerst een LARL(1) yacc (pre-bison) compiler te schrijven voor het genereren van bash-scripts, en daarna ontstond er als een zucht een code die behoorlijk gelijkenis vertoont met het origineel en een goede testcode voor yacc_bash.c mini-jq in bash.<\/p>\n<p>Volledige Artikel: <\/p>\n<p>Bron: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/opensource\/15029405\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u044f\u0437\u044b\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u044f\u0445. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e jq \u043d\u0430 bash. \u041d\u043e \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0442\u0443\u0434\u0430 &#171;\u0443\u043c\u043d\u043e\u0441\u0442\u0438&#187;, \u0442\u0435\u043c \u0442\u0440\u0443\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u0434\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0434\u043e\u0435\u043b\u043e, \u0447\u0442\u043e \u0441\u043f\u043e\u0434\u0432\u0438\u0433\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 LARL(1) yacc (pre-bison) \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 bash-\u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c \u043a\u0430\u043a \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34906","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u044f\u0437\u044b\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u044f\u0445. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e jq \u043d\u0430 bash.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/news\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47yacc (pre-bison) \u043f\u0430\u0440\u0441\u0435\u0440 \u0432 bash-\u0441\u043a\u0440\u0438\u043f\u0442. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f jq \u043d\u0430 bash | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u044f\u0437\u044b\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u044f\u0445. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e jq \u043d\u0430 bash.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/news\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:01:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:01:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47yacc (pre-bison) parser naar bash-script. Implementatie van jq in bash | ProHoster","description":"Soms is het een uitdaging om een kleine slimme script te schrijven die een bepaalde ingebedde grammatica begrijpt, dat wil zeggen met mini-taal van binnenuit. Aanvankelijk schreef ik een minimale implementatie van jq in bash.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47yacc (pre-bison) \u043f\u0430\u0440\u0441\u0435\u0440 \u0432 bash-\u0441\u043a\u0440\u0438\u043f\u0442. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f jq \u043d\u0430 bash | ProHoster","og:description":"\u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u0443\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u044f\u0437\u044b\u043a\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u044f\u0445. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e jq \u043d\u0430 bash.","og:url":"https:\/\/prohoster.info\/nl\/blog\/news\/yacc-pre-bison-parser-v-bash-skript-realizatsiya-jq-na-bash","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:01:11+00:00","article:modified_time":"2019-10-31T19:01:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34906","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 21:02:41","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:13:26","updated":"2026-01-21 21:02:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/34906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=34906"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/34906\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=34906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=34906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=34906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}