{"id":23654,"date":"2023-05-18T07:03:38","date_gmt":"2023-05-18T03:33:38","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/"},"modified":"2023-05-18T07:03:38","modified_gmt":"2023-05-18T03:33:38","slug":"creating-a-dsl-in-python-dj6","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/","title":{"rendered":"\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 DSL \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646"},"content":{"rendered":"<div data-article-id=\"1471422\" id=\"article-body\">\n<p>\u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 DSL\u060c \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u062a\u062e\u0635\u0635\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0645\u0634\u06a9\u0644\u0627\u062a \u062a\u062e\u0635\u0635\u06cc \u062f\u0631 \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u062e\u0627\u0635 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f.  DSL \u0647\u0627 \u06cc\u06a9 \u0646\u062d\u0648 \u0645\u062e\u062a\u0635\u0631 \u0648 \u06af\u0648\u06cc\u0627 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627 \u0648 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc \u062e\u0627\u0635 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062e\u0627\u0635 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  DSL \u0647\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u0646\u062f \u062a\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0634\u06cc\u0648\u0647 \u0627\u06cc \u0628\u0635\u0631\u06cc \u0628\u06cc\u0627\u0646 \u06a9\u0646\u0646\u062f.  \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 DSL \u0647\u0627\u060c \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u062f\u0648\u0646 \u067e\u0631\u062f\u0627\u062e\u062a\u0646 \u0628\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc\u060c \u0631\u0648\u06cc \u0645\u0634\u06a9\u0644 \u0645\u0648\u062c\u0648\u062f \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 DSL \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f.  \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0631\u0633\u0627 \u0628\u0648\u062f\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u062e\u0627\u0635 \u062f\u0627\u0645\u0646\u0647 \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u063a\u0646\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627 \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u060c \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0645\u062d\u06a9\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f DSL\u0647\u0627\u06cc \u0645\u0646\u062d\u0635\u0631\u0628\u0647\u200c\u0641\u0631\u062f \u0648 \u062a\u062e\u0635\u0635\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u06a9\u062f \u0645\u0648\u062c\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0631\u0648\u0646\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06cc\u06a9 DSL \u0633\u0627\u062f\u0647 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u06cc\u0645.  \u0645\u0627 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0627\u062c\u0632\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0645\u0631\u0627\u062d\u0644 \u0627\u0633\u0627\u0633\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc DSL \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0634\u0645\u0627 \u062f\u0631\u06a9 \u0631\u0648\u0634\u0646\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u0637\u0631\u0627\u062d\u06cc\u060c \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 DSL \u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u062e\u0648\u062f \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a!<\/p>\n<p>DSL \u0647\u0627 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u062a\u062e\u0635\u0635\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0647 \u0634\u06cc\u0648\u0647 \u0627\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0634\u0647\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0646\u062f.  \u0622\u0646\u0647\u0627 \u06cc\u06a9 \u0646\u062d\u0648 \u0645\u062e\u062a\u0635\u0631 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u062e\u0627\u0635 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.  \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0686\u0646\u062f\u06cc\u0646 \u0645\u0632\u06cc\u062a \u0627\u0632 \u062c\u0645\u0644\u0647 \u0628\u0647\u0628\u0648\u062f \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc\u060c \u0628\u06cc\u0627\u0646\u060c \u06af\u0633\u062a\u0631\u0634 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0631\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#DSL%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%AE%D9%84%DB%8C_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C\" >DSL\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u062e\u0627\u0631\u062c\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#DSL_%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%AE%D9%84%DB%8C\" >DSL \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#DSL_%D9%87%D8%A7%DB%8C_%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C\" >DSL \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#%D8%A7%D8%B5%D9%88%D9%84_%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C_%D8%AF%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_DSL\" >\u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u062f\u0631 \u0627\u06cc\u062c\u0627\u062f DSL<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87_%D9%87%D8%A7\" >\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C_%D9%86%D8%AD%D9%88\" >\u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u062d\u0648<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/creating-a-dsl-in-python-dj6\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%82%D9%88%D8%A7%D8%B9%D8%AF_%DA%AF%D8%B1%D8%A7%D9%85%D8%B1\" >\u0627\u06cc\u062c\u0627\u062f \u0642\u0648\u0627\u0639\u062f \u06af\u0631\u0627\u0645\u0631<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"DSL%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%AE%D9%84%DB%8C_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C\"><\/span>\n<p>  DSL\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u062e\u0627\u0631\u062c\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0648 \u062f\u0633\u062a\u0647 DSL \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c DSL \u062f\u0627\u062e\u0644\u06cc \u0648 DSL \u062e\u0627\u0631\u062c\u06cc.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"DSL_%D9%87%D8%A7%DB%8C_%D8%AF%D8%A7%D8%AE%D9%84%DB%8C\"><\/span>\n<p>  DSL \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>DSL\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u062e\u0648\u062f \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0646\u062d\u0648\u06cc \u0632\u0628\u0627\u0646 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u0646\u062d\u0648 \u062a\u062e\u0635\u0635\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0627\u06cc\u0646 DSL \u0647\u0627 \u0627\u0632 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0648 \u0628\u06cc\u0627\u0646 \u0632\u0628\u0627\u0646 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0646\u0633\u0628\u062a\u0627 \u0622\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"DSL_%D9%87%D8%A7%DB%8C_%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C\"><\/span>\n<p>  DSL \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0632 \u0633\u0648\u06cc \u062f\u06cc\u06af\u0631\u060c DSL\u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc\u060c \u0646\u062d\u0648 \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u0627\u0632 \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0645\u06cc\u0632\u0628\u0627\u0646 \u062c\u062f\u0627 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u06cc\u0646\u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u0646\u062f\u0647 \u0648 \u0645\u0641\u0633\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u062a\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062a\u062c\u0632\u06cc\u0647 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0632\u0628\u0627\u0646 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u062f.  \u0645\u0632\u0627\u06cc\u0627\u06cc DSL \u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0646\u062a\u0631\u0644 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631 \u0637\u0631\u0627\u062d\u06cc \u0648 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0632 \u0645\u0636\u0631\u0627\u062a \u0622\u0646 \u0627\u0641\u0632\u0627\u06cc\u0634 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B5%D9%88%D9%84_%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C_%D8%AF%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_DSL\"><\/span>\n<p>  \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u062f\u0631 \u0627\u06cc\u062c\u0627\u062f DSL<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f DSL \u0627\u0635\u0648\u0644 \u0637\u0631\u0627\u062d\u06cc \u062e\u0627\u0635\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0631\u0639\u0627\u06cc\u062a \u0634\u0648\u062f.  \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0635\u0648\u0644 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 DSL \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0635\u0631\u06cc\u060c \u06af\u0648\u06cc\u0627 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u062f\u0631 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a.<\/p>\n<ol>\n<li>\u0633\u0627\u062f\u06af\u06cc: DSL \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0646\u062d\u0648 \u0648\u0627\u0636\u062d \u0648 \u0645\u062e\u062a\u0635\u0631 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0642\u0627\u0628\u0644 \u062f\u0631\u06a9 \u0628\u0627\u0634\u062f \u0648 \u062f\u0631 \u062d\u0648\u0632\u0647 \u0645\u0634\u06a9\u0644 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627\u0634\u062f.<\/li>\n<li>\u0628\u06cc\u0627\u0646\u06af\u0631 \u0628\u0648\u062f\u0646: \u06cc\u06a9 DSL \u0628\u0627\u06cc\u062f \u062a\u0644\u0627\u0634 \u06a9\u0646\u062f \u062a\u0627 \u062f\u0627\u0645\u0646\u0647 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u062b\u0628\u062a \u06a9\u0646\u062f\u060c \u0639\u0645\u0644\u06cc\u0627\u062a \u0648 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0647 \u0646\u062a\u0627\u06cc\u062c \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u062f.<\/li>\n<li>\u062e\u0648\u0627\u0646\u0627\u06cc\u06cc: DSL \u0647\u0627 \u0628\u0627\u06cc\u062f \u062a\u0648\u0633\u0637 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646\u06cc \u06a9\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0631\u0627 \u0645\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0627\u0634\u0646\u062f.  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u0648 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u062b\u0627\u0628\u062a\u060c \u0637\u0631\u0627\u062d\u06cc \u0648\u0627\u0636\u062d \u0648 \u062e\u0648\u0627\u0646\u0627 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u062a\u0631\u06a9\u06cc\u0628 \u0628\u0646\u062f\u06cc: \u062a\u0631\u06a9\u06cc\u0628 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc DSL \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u062e\u062a \u0627\u062c\u0632\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u0645\u0639\u0646\u0627\u062f\u0627\u0631 \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc \u0633\u0627\u062f\u0647 \u062a\u0631 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0632 \u06a9\u062f \u0631\u0627 \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627: \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0627\u0637\u0644\u0627\u0639 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u0632 DSL \u0634\u0645\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0628\u0631\u0648\u0632 \u062e\u0637\u0627 \u0648 \u0646\u062d\u0648\u0647 \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u0628\u0647 \u0622\u0646\u0647\u0627 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/li>\n<\/ol>\n<p>\u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc DSL \u062e\u0648\u062f\u060c \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0622\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f DSL \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0627\u06cc\u062a\u0648\u0646 \u062a\u0639\u062f\u0627\u062f\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f DSL \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u06cc\u06a9 \u06af\u0632\u06cc\u0646\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a <code>ply<\/code>.<\/p>\n<p><code>ply<\/code>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0632\u0627\u0631 \u062a\u062c\u0632\u06cc\u0647 lex \u0648 yacc \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a \u0648 \u0627\u0645\u06a9\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f lexer \u0648 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u0646\u062f\u0647 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u0631\u0648\u0634\u0646 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06af\u0631\u0627\u0645\u0631 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0648 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u062f DSL \u0634\u0645\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>ply<\/code> \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u0631\u0641\u062a\u0627\u0631 DSL \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0647 \u0634\u0631\u0637\u06cc \u06a9\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc <code>pip<\/code> \u0646\u0635\u0628 \u0634\u062f\u0647\u060c \u062f\u0631 \u062d\u0627\u0644 \u0646\u0635\u0628 <code>ply<\/code> \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>pip <span class=\"nb\">install <\/span>ply\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 <code>ply<\/code> \u0646\u0635\u0628 \u0634\u062f\u0647 \u0634\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0622\u0645\u0627\u062f\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0648 \u062a\u0641\u0633\u06cc\u0631 DSL \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f!<\/p>\n<p>\u062a\u0639\u0631\u06cc\u0641 \u0633\u06cc\u0646\u062a\u06a9\u0633 DSL \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06cc\u06a9 \u06af\u0627\u0645 \u0645\u0647\u0645 \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u062a.  \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0632\u0628\u0627\u0646\u060c \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0648 \u0639\u0628\u0627\u0631\u0627\u062a\u06cc \u06a9\u0647 DSL \u0634\u0645\u0627 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0646 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.  \u0628\u0627 \u0637\u0631\u0627\u062d\u06cc \u06cc\u06a9 \u0646\u062d\u0648 \u0648\u0627\u0636\u062d\u060c \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f \u062a\u0627 \u0627\u0647\u062f\u0627\u0641 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0636\u062d \u0648 \u062f\u0642\u06cc\u0642 \u0628\u06cc\u0627\u0646 \u06a9\u0646\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C_%D9%86%D8%AD%D9%88\"><\/span>\n<p>  \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u062d\u0648<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0628\u062a\u062f\u0627 \u062f\u0627\u0645\u0646\u0647 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 DSL \u062e\u0648\u062f \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f.  \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 DSL \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u062f \u0686\u0647 \u0627\u0639\u0645\u0627\u0644\u060c \u0634\u0631\u0627\u06cc\u0637 \u0648 \u0645\u062d\u0627\u0633\u0628\u0627\u062a\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f.  \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 DSL \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0628\u0631\u062f\u0627\u0631\u0647\u0627\u060c \u0645\u0627\u062a\u0631\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0633\u0627\u062f\u0647 \u0645\u0627\u0646\u0646\u062f \u062c\u0645\u0639 \u0628\u0631\u062f\u0627\u0631 \u0648 \u0636\u0631\u0628 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f DSL \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>vector v1 = [1, 2, 3]\nvector v2 = [4, 5, 6]\nmatrix m1 = [[1, 2], [3, 4]]\nmatrix m2 = [[5, 6], [7, 8]]\n\nvector v3 = v1 + v2\nmatrix m3 = m1 * m2\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 DSL \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0628\u0631\u062f\u0627\u0631\u0647\u0627 \u0648 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0647\u0627 \u0648 \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0633\u0627\u062f\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u0627 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0631\u0627 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc DSL \u062e\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0639\u0645\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>numpy<\/code> \u0632\u0628\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0639\u0645\u0644\u06cc\u0627\u062a \u062c\u0645\u0639 \u0648 \u0636\u0631\u0628 \u0648 \u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0634\u06a9\u0644.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%82%D9%88%D8%A7%D8%B9%D8%AF_%DA%AF%D8%B1%D8%A7%D9%85%D8%B1\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0642\u0648\u0627\u0639\u062f \u06af\u0631\u0627\u0645\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u062f\u0631\u06a9 \u0648\u0627\u0636\u062d\u06cc \u0627\u0632 \u0646\u062d\u0648\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06af\u0631\u0627\u0645\u0631\u06cc \u062f\u0631 <code>ply<\/code>.  \u0627\u06cc\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u0645\u0639\u0646\u0627\u06cc\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0645\u0639\u062a\u0628\u0631 DSL \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0643\u0631\u062f\u0646 <code>ply<\/code>\u060c \u0646\u0627\u0645 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627 \u0648 \u0639\u0628\u0627\u0631\u0627\u062a \u0645\u0646\u0638\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0648\u06a9\u0646 \u06a9\u0631\u062f\u0646 \u062c\u0631\u06cc\u0627\u0646 \u0648\u0631\u0648\u062f\u06cc \u0648\u0631\u0648\u062f\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0648\u0627\u0639\u062f \u06af\u0631\u0627\u0645\u0631\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0646\u062d\u0648\u0647 \u062a\u0631\u06a9\u06cc\u0628 \u0627\u06cc\u0646 \u0646\u0634\u0627\u0646\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0639\u0628\u0627\u0631\u0627\u062a \u06a9\u062f \u0645\u0639\u062a\u0628\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. <\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">ply.lex<\/span> <span class=\"k\">as<\/span> <span class=\"n\">lex<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">ply.yacc<\/span> <span class=\"k\">as<\/span> <span class=\"n\">yacc<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">numpy<\/span> <span class=\"k\">as<\/span> <span class=\"n\">np<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># Token definitions\n<\/span><span class=\"n\">tokens<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span>\n        <span class=\"s\">'IDENTIFIER'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'NUMBER'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'VECTOR_ID'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'VECTOR'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'MATRIX_ID'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'MATRIX'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'PLUS'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'MULTIPLY'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'LPAREN'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'RPAREN'<\/span><span class=\"p\">,<\/span> \n        <span class=\"s\">'LBRACKET'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'RBRACKET'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'COMMA'<\/span><span class=\"p\">,<\/span> \n        <span class=\"s\">'EQUALS'<\/span><span class=\"p\">,<\/span>\n        <span class=\"s\">'PRINT'<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Ignored characters\n<\/span><span class=\"n\">t_ignore<\/span> <span class=\"o\">=<\/span> <span class=\"s\">' <\/span><span class=\"se\">\\t<\/span><span class=\"s\">'<\/span>\n\n<span class=\"c1\"># Token regular expressions\n<\/span><span class=\"n\">t_PLUS<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\+'<\/span>\n<span class=\"n\">t_MULTIPLY<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\*'<\/span>\n<span class=\"n\">t_LPAREN<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\('<\/span>\n<span class=\"n\">t_RPAREN<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\)'<\/span>\n<span class=\"n\">t_EQUALS<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'='<\/span>\n<span class=\"n\">t_LBRACKET<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\['<\/span>\n<span class=\"n\">t_RBRACKET<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">'\\]'<\/span>\n<span class=\"n\">t_COMMA<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s\">','<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u06cc\u06a9 \u0630\u062e\u06cc\u0631\u0647 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u06cc\u0646 \u06cc\u06a9 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0634\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0634\u06cc\u0621 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 DSL \u06af\u0633\u062a\u0631\u0634 \u06cc\u0627\u0628\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># Variables\n<\/span><span class=\"n\">variables<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0686\u0646\u062f \u0646\u0634\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062e\u0637\u0648\u0637 \u062c\u062f\u06cc\u062f\u060c \u0628\u06cc\u0627\u0646\u06cc\u0647 \u0686\u0627\u067e\u06cc\u060c \u0627\u0639\u0644\u0627\u0646 \u0647\u0627\u06cc \u0628\u0631\u062f\u0627\u0631\u06cc \u0648 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0648 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc\u0645\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># Token definition for newline, print, vector and \n# matrix identifiers, generic identifiers, and numbers\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">t_NEWLINE<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'\\n+'<\/span>\n    <span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">lexer<\/span><span class=\"p\">.<\/span><span class=\"n\">lineno<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">value<\/span><span class=\"p\">.<\/span><span class=\"n\">count<\/span><span class=\"p\">(<\/span><span class=\"s\">'<\/span><span class=\"se\">\\n<\/span><span class=\"s\">'<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">t_PRINT<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'print'<\/span>\n    <span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"nb\">type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'PRINT'<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">t<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">t_VECTOR_ID<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'vector\\s+[a-zA-Z_][a-zA-Z_0-9]*'<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">t<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">t_MATRIX_ID<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'matrix\\s+[a-zA-Z_][a-zA-Z_0-9]*'<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">t<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">t_IDENTIFIER<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'[a-zA-Z_][a-zA-Z_0-9]*'<\/span>\n    <span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"nb\">type<\/span> <span class=\"o\">=<\/span> <span class=\"s\">'IDENTIFIER'<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">t<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">t_NUMBER<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">):<\/span>\n    <span class=\"sa\">r<\/span><span class=\"s\">'\\d+'<\/span>\n    <span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">value<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">t<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0631\u0627\u06cc DSL \u062e\u0648\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0633\u0627\u0633\u0627\u064b \u06cc\u06a9 \u0633\u0631\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f.  \u0645\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u06af\u0631\u0627\u0645\u0631 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0646\u0638\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0631 \u06a9\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u0646\u062c\u0627 \u0641\u0642\u0637 \u0641\u0639\u0644\u0627 \u0645\u06cc \u06af\u0630\u0631\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># ---- PROGRAM ----\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">p_program<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'''program : program statement\n               | statement'''<\/span>\n    <span class=\"k\">pass<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0631\u0648\u06cc \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u062f\u0627\u0631\u0647\u0627\u06cc \u062a\u062c\u0632\u06cc\u0647 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645.  \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u062f\u0627\u0631 \u0628\u0647 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644 \u0645\u062a\u063a\u06cc\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0631\u0648\u06cc \u0628\u062e\u0634 \u062a\u06a9\u0644\u06cc\u0641 \u062a\u0645\u0631\u06a9\u0632 \u06a9\u0646\u06cc\u0645: <code>vector v1 = &lt;expression&gt;<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_statement_vector_assignment<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'statement : VECTOR_ID EQUALS expression'<\/span>\n    <span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">].<\/span><span class=\"n\">split<\/span><span class=\"p\">()[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n    <span class=\"n\">variables<\/span><span class=\"p\">[<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">])<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a <code>VECTOR_ID<\/code> \u0646\u0634\u0627\u0646\u0647\u060c \u06cc\u06a9 <code>EQUALS<\/code> \u0646\u0634\u0627\u0646\u0647\u060c \u0648 \u06cc\u06a9 <code>&lt;expression&gt;<\/code>.  \u0645\u0627 \u0646\u0634\u0627\u0646\u0647 \u0631\u0627 \u062f\u0631 p[1]\u060c \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 <code>VECTOR_ID<\/code>\u0648 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0646\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u062f.  \u062f\u0631 \u0645\u062b\u0627\u0644 \u0628\u0627\u0644\u0627\u060c \u0627\u06cc\u0646\u0637\u0648\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>v1<\/code>.  \u0633\u067e\u0633 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u06cc\u0645 <code>variables[variable_name]<\/code> \u0628\u0647 \u0627\u0631\u0632\u0634 <code>&lt;expression&gt;<\/code>.  \u0633\u067e\u0633 p \u0631\u0627 \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u06cc\u0645[0] \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062a\u0627\u067e\u0644\u06cc \u0627\u0632 <code>(variable name, value)<\/code>.<\/p>\n<p>\u0627\u0632 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 <code>vector<\/code> \u0628\u06cc\u0627\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u06cc \u062a\u0648\u0627\u0628\u0639.  \u0622\u0646\u0647\u0627 \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_vectordef<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : LBRACKET vector_values RBRACKET'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"p\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_vector_values_single<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'vector_values : NUMBER'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_vector_values_multiple<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'vector_values : NUMBER COMMA vector_values'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u06a9\u062f \u0628\u0647 \u0634\u0631\u062d \u0632\u06cc\u0631 \u0627\u0633\u062a. <code>p_vectordef<\/code>\u0639\u0628\u0627\u0631\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0639\u0628\u0627\u0631\u0627\u062a \u0628\u0647 \u0634\u06a9\u0644 [ <code>&lt;vector_values&gt;<\/code> ] . <code>p_vector_values_single<\/code> \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0627\u062d\u062f \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0641\u0642\u0637 \u06cc\u06a9 \u0639\u062f\u062f.  \u0633\u0631\u0627\u0646\u062c\u0627\u0645\u060c <code>p_vector_values_multiple<\/code> \u0686\u0646\u062f\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 <code>1, 2, 3, 4<\/code>.  \u0628\u0647 \u0646\u062d\u0648\u0647 \u0627\u0631\u062c\u0627\u0639 \u0645\u0627 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f <code>vector_values<\/code> \u0627\u0632 \u062f\u0631\u0648\u0646 <code>P_vector_values_multiple<\/code>?  \u0627\u06cc\u0646 \u0628\u0647 \u0622\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062e\u0648\u062f \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0631 a \u062e\u0627\u062a\u0645\u0647 \u06cc\u0627\u0628\u062f <code>NUMBER<\/code> \u0646\u0634\u0627\u0646\u0647<\/p>\n<p>\u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u062f\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0639\u0628\u0627\u0631\u0627\u062a \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645 <code>vector v1 = [1, 2, 3]<\/code>.<\/p>\n<p>\u0645\u0627\u062a\u0631\u06cc\u0633 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647 \u0628\u0627 \u0686\u0646\u062f \u062a\u0648\u0627\u0628\u0639 \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0633\u0637\u0631\u0647\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u062f\u06cc\u0641 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># ----- MATRIX -----\n<\/span><span class=\"k\">def<\/span> <span class=\"nf\">p_statement_matrix_assignment<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'statement : MATRIX_ID EQUALS expression'<\/span>\n    <span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">].<\/span><span class=\"n\">split<\/span><span class=\"p\">()[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n    <span class=\"n\">variables<\/span><span class=\"p\">[<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">])<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_expression_matrix<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : MATRIX'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_matrix<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : LBRACKET matrix_rows RBRACKET'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"p\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_matrix_rows_single<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'matrix_rows : row'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_matrix_rows_multiple<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'matrix_rows : row COMMA matrix_rows'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_row<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'row : LBRACKET row_values RBRACKET'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_row_values<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'row_values : NUMBER'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_row_values_multiple<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'row_values : NUMBER COMMA row_values'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n\n<span class=\"c1\"># ----- END MATRIX -----\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u062f \u0628\u0627\u0644\u0627 \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u0646\u06cc\u0645 <code>matrix m1 = [[a1, b1, c1,....,z1], [a2, b2, c2...,z2], ...., [an, bn, cn, ....zn]]<\/code>.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0627\u0646\u0646\u062f \u062c\u0645\u0639 \u0648 \u0636\u0631\u0628 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0686\u0627\u067e \u0628\u0631\u0627\u06cc \u0686\u0627\u067e \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u0645\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 <code>IDENTIFIERS<\/code> \u0627\u0632 \u062c\u062f\u0648\u0644 \u0645\u062a\u063a\u06cc\u0631<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_expression_identifier<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : IDENTIFIER'<\/span>\n    <span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">variable_name<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">variables<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">variables<\/span><span class=\"p\">[<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"s\">\"Error: Variable '<\/span><span class=\"si\">{<\/span><span class=\"n\">variable_name<\/span><span class=\"si\">}<\/span><span class=\"s\">' not in variable table\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06af\u0631 \u0628\u0627 a \u0645\u0648\u0627\u062c\u0647 \u0634\u0648\u06cc\u0645 <code>IDENTIFIER<\/code> \u0646\u0634\u0627\u0646\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0622\u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631 \u062a\u0648\u0633\u0637 \u0622\u0646 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0627\u0633\u062a <code>IDENTIFIER<\/code> \u062f\u0631 \u0634\u0646\u0627\u0633\u0647 \u0645\u062a\u063a\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f.  \u0627\u06af\u0631 \u0647\u0633\u062a\u060c \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0622\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>p[0]<\/code> \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062c\u0645\u0639 \u0648 \u0636\u0631\u0628 \u0646\u06cc\u0632 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u062c\u0644\u0648 \u0647\u0633\u062a\u0646\u062f\u060c \u0628\u0627 \u0636\u0631\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 numpy <code>matmul<\/code> \u0631\u0648\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_expression_add<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : expression PLUS expression'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">p_expression_multiply<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'expression : expression MULTIPLY expression'<\/span>\n    <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"p\">.<\/span><span class=\"n\">matmul<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span><span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">])<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c <code>print<\/code> \u0628\u06cc\u0627\u0646\u06cc\u0647 \u0631\u0627 \u0646\u06cc\u0632 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_statement_print<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"s\">'statement : PRINT LPAREN IDENTIFIER RPAREN'<\/span>\n    <span class=\"n\">variable_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">p<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">variable_name<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">variables<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">variables<\/span><span class=\"p\">[<\/span><span class=\"n\">variable_name<\/span><span class=\"p\">])<\/span>\n    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"s\">\"Error: Variable '<\/span><span class=\"si\">{<\/span><span class=\"n\">variable_name<\/span><span class=\"si\">}<\/span><span class=\"s\">' not in variable table\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u0639\u0628\u0627\u0631\u0627\u062a \u0631\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u062a\u062c\u0632\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>print(&lt;IDENTIFIER&gt;)<\/code>.  \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>IDENTIFIER<\/code> \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644 \u0645\u062a\u063a\u06cc\u0631 \u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f.  \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f\u060c \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u0627 \u0628\u0627 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062e\u0637\u0627\u06cc \u0633\u0627\u062f\u0647 \u0646\u062a\u06cc\u062c\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"k\">def<\/span> <span class=\"nf\">p_error<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">print<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Syntax error: \"<\/span><span class=\"p\">,<\/span> <span class=\"n\">p<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u060c lexer \u0648 parser \u0631\u0627 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># Build the lexer and parser\nlexer = lex.lex()\nparser = yacc.yacc()\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u06a9\u062f DSL \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"c1\"># Parsing and executing DSL code\n<\/span><span class=\"n\">dsl_code<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"\"\"\nvector v1 = [1, 2, 3]\nvector v2 = [4, 5, 6]\nprint(v1)\nprint(v2)\n\nmatrix m1 = [[1, 2], [3, 4], [5, 6]]\nmatrix m2 = [[5, 6, 7], [7, 8, 9]]\n\nprint(m1)\nprint(m2)\n\nvector v3 = v1 + v2\nmatrix m3 = m1 * m2\n\nprint(v3)\nprint(m3)\n\"\"\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f <code>parse<\/code> \u0631\u0648\u0634 \u0628\u0631 \u0631\u0648\u06cc <code>parser<\/code> \u0634\u06cc\u0621 \u062f\u0631 <code>dsl_code<\/code> \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">parser<\/span><span class=\"p\">.<\/span><span class=\"n\">parse<\/span><span class=\"p\">(<\/span><span class=\"n\">dsl_code<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0622\u0646\u060c \u0645\u0627 \u06cc\u06a9 DSL \u06a9\u0627\u0645\u0644\u0627\u064b \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u062f\u0627\u0631\u06cc\u0645<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0645\u062e\u0635\u0648\u0635 \u062f\u0627\u0645\u0646\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645.  \u0645\u0627 \u062f\u0648 \u0646\u0648\u0639 DSL \u062f\u0627\u062e\u0644\u06cc \u0648 DSL \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u06cc\u06a9 DSL \u062e\u0648\u0628 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645.  \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u0628\u0647 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 DSL \u0628\u0631\u0627\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a \u062e\u0627\u0635 \u062f\u0627\u0645\u0646\u0647 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u06cc\u0645.  \u0633\u067e\u0633 \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u0637\u0631\u0627\u062d\u06cc \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06cc\u06a9 DSL \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Ply \u067e\u0631\u062f\u0627\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc lexing \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0631\u0627 \u062f\u0631 \u0632\u0628\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0645\u0627 \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc DSL \u062e\u0648\u062f \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u06cc\u0645.  \u0627\u06cc\u0646\u0647\u0627 \u0628\u0644\u0648\u06a9\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u0632\u0628\u0627\u0646 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u0639\u062f\u0627\u062f\u060c \u0634\u0646\u0627\u0633\u0647\u200c\u0647\u0627 \u0648 \u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0627\u0646\u0646\u062f <code>vector<\/code> \u0648 <code>matrix<\/code>.  \u0645\u0627 \u0627\u0632 \u0639\u0628\u0627\u0631\u0627\u062a \u0645\u0646\u0638\u0645 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0642\u0648\u0627\u0646\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0627\u0632 Ply&#8217;s lexer tok tokenize \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f DSL \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<p>\u0633\u067e\u0633 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0637\u0631\u0627\u062d\u06cc \u0642\u0648\u0627\u0639\u062f \u062f\u0633\u062a\u0648\u0631 \u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u06a9\u0631\u062f\u06cc\u0645 \u062a\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0646\u062d\u0648\u06cc \u0648 \u0645\u0639\u0646\u0627\u06cc\u06cc \u0632\u0628\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0639\u0644\u0627\u0645 \u0628\u0631\u062f\u0627\u0631\u0647\u0627 \u0648 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0647\u0627 \u0648 \u062a\u062e\u0635\u06cc\u0635 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645.  \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u062c\u0645\u0639 \u0648 \u0636\u0631\u0628 \u0645\u0627\u062a\u0631\u06cc\u0633 \u0631\u0648\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062f\u0633\u062a\u0648\u0631 \u0686\u0627\u067e\u06cc \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u06cc\u0645.  \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u062c\u0632\u06cc\u0647 \u06a9\u062f\u060c \u0645\u0627 \u06cc\u06a9 \u062f\u0631\u062e\u062a \u0646\u062d\u0648 \u0627\u0646\u062a\u0632\u0627\u0639\u06cc (AST) \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u062f DSL \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0628\u0627 \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc DSL \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0648 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Ply\u060c \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0627\u0646\u0634 \u0648 \u0627\u0628\u0632\u0627\u0631 \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u062e\u0627\u0635 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f.  \u062e\u0648\u0627\u0647 \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc \u062f\u0627\u062f\u0647\u060c \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0642\u0648\u0627\u0646\u06cc\u0646\u060c \u0637\u0631\u0627\u062d\u06cc \u0628\u0627\u0632\u06cc \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 DSL \u062e\u0648\u0628 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u062a\u0627 \u062d\u062f \u0632\u06cc\u0627\u062f\u06cc \u062a\u0633\u0647\u06cc\u0644 \u06a9\u0646\u062f\u060c \u0628\u0647\u0631\u0647\u200c\u0648\u0631\u06cc \u0648 \u0628\u06cc\u0627\u0646 \u06a9\u062f \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u0647 \u0627\u06cc\u062f \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0628\u0631\u06cc\u062f \u0648 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u0633\u0627\u062e\u062a DSL \u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0646\u06cc\u062f!  \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f\u060c \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0642\u062f\u0631\u062a \u0627\u06cc\u062c\u0627\u062f DSL\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0628\u0647\u0628\u0648\u062f \u0631\u0648\u0634 \u0645\u0642\u0627\u0628\u0644\u0647 \u0628\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u062f\u0627\u0645\u0646\u0647\u200c\u0647\u0627 \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0634\u0645\u0627\u060c \u0648 \u062a\u0648\u0633\u0639\u0647 DSL \u0645\u0628\u0627\u0631\u06a9!<\/p>\n<p>\u06a9\u062f \u06a9\u0627\u0645\u0644 \u0645\u0648\u062c\u0648\u062f \u062f\u0631: https:\/\/github.com\/fractalis\/devto-articles\/blob\/main\/python-dsl\/matrix-dsl.py<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u062f\u0627\u0645\u0646\u0647 \u06cc\u0627 DSL\u060c \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u062a\u062e\u0635\u0635\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0645\u0634\u06a9\u0644\u0627\u062a \u062a\u062e\u0635\u0635\u06cc \u062f\u0631 \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u062e\u0627\u0635 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f. DSL \u0647\u0627 \u06cc\u06a9 \u0646\u062d\u0648 \u0645\u062e\u062a\u0635\u0631 \u0648 \u06af\u0648\u06cc\u0627 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627 \u0648 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc \u062e\u0627\u0635 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u062e\u0627\u0635 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. DSL \u0647\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u0646\u062f \u062a\u0627 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":23655,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-23654","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/23654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=23654"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/23654\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/23655"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=23654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=23654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=23654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}