{"id":24,"date":"2008-06-13T15:27:48","date_gmt":"2008-06-13T12:27:48","guid":{"rendered":"http:\/\/brownian.org.ua\/?page_id=24"},"modified":"2008-06-23T17:54:56","modified_gmt":"2008-06-23T14:54:56","slug":"lang_uksemantychnyy-analizlang_uklang_ensemantic-analysislang_en","status":"publish","type":"page","link":"https:\/\/brownian.org.ua\/?page_id=24","title":{"rendered":"\u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0456\u0437"},"content":{"rendered":"<p>\u041d\u0430 \u0446\u044c\u043e\u043c\u0443 \u043a\u0440\u043e\u0446\u0456 \u043c\u0438 \u0445\u043e\u0447\u0435\u043c\u043e \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e \u043d\u0430 \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0441\u0442\u044c \u043b\u043e\u0433\u0456\u0447\u043d\u0438\u0445 \u043f\u043e\u043c\u0438\u043b\u043e\u043a.<\/p>\n<p>\u0429\u043e \u0441\u0430\u0432\u043c\u0435 \u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u044f\u0442\u0438\u043c\u0435\u043c\u043e? \u042f \u043f\u0440\u043e\u043f\u043e\u043d\u0443\u0436 \u0442\u0430\u043a\u0456 \u0442\u0435\u0441\u0442\u0438:<\/p>\n<ol>\n<li> \u041a\u043e\u0436\u0435\u043d \u043a\u043b\u0430\u0441 \u041f\u041e\u0412\u0418\u041d\u0415\u041d \u043c\u0430\u0442\u0438 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f &#171;<code>rate<\/code>&#171;.<\/li>\n<li> \u041a\u043e\u0436\u0435\u043d \u043a\u043b\u0430\u0441 \u041f\u041e\u0412\u0418\u041d\u0415\u041d \u043c\u0430\u0442\u0438 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f &#171;<code>parent<\/code>&#171;, \u0432\u043e\u043d\u043e \u041f\u041e\u0412\u0418\u041d\u041d\u041e \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0430 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043b\u0430\u0441.<\/li>\n<\/ol>\n<p>\u041c\u0438 \u0441\u0442\u0432\u043e\u0440\u0438\u043c\u043e \u043f\u0456\u0434\u043a\u043b\u0430\u0441 \u043a\u043b\u0430\u0441\u0443 <code>spark.Generic<a href=\"http:\/\/en.wikipedia.org\/wiki\/Abstract_syntax_tree\" target=\"_blank\" title=\"Wikipedia -- Abstract Syntax Tree\">AST<\/a>Traversal<\/code>, \u044f\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0434\u0438\u0432\u043b\u044f\u0442\u0438\u043c\u0435\u0442\u044c\u0441\u044f \u0432\u0441\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0438 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438\u043c\u0435 \u043c\u0435\u0442\u043e\u0434\u0438 \u0437\u0430\u043b\u0435\u0436\u043d\u043e \u0432\u0456\u0434 \u043d\u0430\u0437\u0432\u0438 (\u0442\u0438\u043f\u0443, \u0444\u0430\u043a\u0442\u0438\u0447\u043d\u043e) \u0432\u0443\u0437\u043b\u0430 \u2014 \u0432\u0438\u043a\u043b\u0438\u0447\u0435 <code>n_classdef<\/code> \u0434\u043b\u044f \u0432\u0443\u0437\u043b\u0430 &#171;<code>classdef<\/code>&#187; \u0442\u043e\u0449\u043e.<\/p>\n<p>\u041a\u043e\u0434:<\/p>\n<pre lang=\"PYTHON\">\r\n#!\/usr\/bin\/env python\r\n\r\nimport spark\r\nfrom helper import getValue\r\n\r\ndefined_classes = []\r\nrequested_parents = []\r\n\r\n\r\nclass <a href=\"http:\/\/luxik.cdi.cz\/ devik\/qos\/htb\/\" target=\"_blank\" title=\"HTB Home\"><strong>HTB<\/strong><\/a>CheckTree(spark.Generic<a href=\"http:\/\/en.wikipedia.org\/wiki\/Abstract_syntax_tree\" target=\"_blank\" title=\"Wikipedia -- Abstract Syntax Tree\">AST<\/a>Traversal):\r\n    def __init__(self, ast):\r\n        spark.Generic<a href=\"http:\/\/en.wikipedia.org\/wiki\/Abstract_syntax_tree\" target=\"_blank\" title=\"Wikipedia -- Abstract Syntax Tree\">AST<\/a>Traversal.__init__(self, ast)\r\n        self.postorder()\r\n\r\n    def n_root(self, node):\r\n        defined_classes.append(node.classid)\r\n\r\n    def n_classdef(self, node):\r\n        if not getValue(node, 'rate'):\r\n            print \"Error: `rate' for class MUST be set.\\n\"\r\n            raise RuntimeError\r\n\r\n        defined_classes.append(node.classid)\r\n        requested_parents.append(node.parent)\r\n\r\n    def n_classes(self, node):\r\n        for p in requested_parents:\r\n            if p.attr not in [ d.attr for d in defined_classes ]:\r\n                print \"Error: class %s does not exist.\\n\" % p.attr\r\n                raise RuntimeError\r\n\r\n<\/pre>\n<p>\u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e :-)<\/p>\n<p>\u0423 \u043d\u0430\u0448\u043e\u043c\u0443 \u0432\u0438\u043f\u0430\u0434\u043a\u0443&#160;&#8212; \u043c\u0438 \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u043c\u0430\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0430\u0446\u044e\u0432\u0430\u043d\u043d\u044f \u043b\u0438\u0448\u0435 \u0432\u0443\u0437\u043b\u0456\u0432 \u043f\u0435\u0432\u043d\u0438\u0445 \u0442\u0438\u043f\u0456\u0432. \u041a\u043e\u0436\u0435\u043d \u0432\u0443\u0437\u043e\u043b &#171;<code>classdef<\/code>&#187; \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u044f\u0454, \u0447\u0438 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043e &#171;<code>rate<\/code>&#171;, \u0442\u0430 \u0434\u043e\u0434\u0430\u0454 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 &#171;<code>classid<\/code>&#187; \u0442\u0430 &#171;<code>parent<\/code>&#187; \u0434\u043e \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u0456\u0432. &#171;\u041a\u043e\u0440\u0435\u043d\u0435\u0432\u0438\u0439&#187; \u0432\u0443\u0437\u043e\u043b \u0442\u0430\u043a\u043e\u0436 \u0434\u043e\u0434\u0430\u0454 &#171;<code>classid<\/code>&#187; \u0434\u043e \u0441\u043f\u0438\u0441\u043a\u0443. \u0406 \u043e\u0441\u043a\u0456\u043b\u044c\u043a\u0438 <a href=\"http:\/\/pages.cpsc.ucalgary.ca\/%7Eaycock\/spark\/\" target=\"_blank\" title=\"SPARK homepage\">SPARK<\/a> \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0430\u0454 \u0434\u0435\u0440\u0435\u0432\u043e \u0437\u043d\u0438\u0437\u0443 \u0432\u0433\u043e\u0440\u0443 (\u0432\u0456\u0434 &#171;\u043b\u0438\u0441\u0442\u043a\u0456\u0432&#187; \u0434\u043e &#171;\u043a\u043e\u0440\u0435\u043d\u044f&#187; \u2014 \u0432\u0456\u0434 &#171;<code>classdef<\/code>&#187; \u0434\u043e &#171;<code>classes<\/code>&#187; \u0443 \u043d\u0430\u0448\u043e\u043c\u0443 \u0432\u0438\u043f\u0430\u0434\u043a\u0443), \u0432\u0443\u0437\u043e\u043b &#171;<code>classes<\/code>&#187; \u0431\u0443\u0434\u0435 \u043e\u043f\u0440\u0430\u0446\u044c\u043e\u0432\u0430\u043d\u043e \u0432 \u043e\u0441\u0442\u0430\u043d\u043d\u044e \u0447\u0435\u0440\u0433\u0443, \u043a\u043e\u043b\u0438 \u0432\u0441\u0456 &#171;<code>classid<\/code>&#187; \u0432\u0436\u0435 \u043e\u043f\u0440\u0430\u0446\u044c\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p><code>helper.getValue<\/code>&#160;&#8212; \u0444\u0443\u043d\u043a\u0446\u0456\u044f \u044f\u043a\u0430 \u0432\u0435\u0440\u0442\u0430\u0454 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u043e \u0456\u043c\u0435\u043d\u0456 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u043c\u0438 \u0449\u0435 \u0457\u0457 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438\u043c\u0435\u043c\u043e):<\/p>\n<pre lang=\"PYTHON\">\r\ndef getValue(node, param):\r\n    for p in node.params:\r\n        if p.type == param:\r\n            return p.value\r\n    else:\r\n        return None\r\n\r\n<\/pre>\n<p>\u0406 \u043d\u0430 \u0446\u044c\u043e\u043c\u0443 \u043a\u0440\u043e\u0446\u0456 \u043c\u0438 \u043c\u043e\u0436\u0435\u043c\u043e \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438, \u0447\u0438 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e &#171;<code>ceil<\/code>&#171;, \u0442\u0430 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0439\u043e\u0433\u043e \u0440\u0456\u0432\u043d\u0438\u043c &#171;<code>rate<\/code>&#171;, \u044f\u043a\u0449\u043e \u0439\u043e\u0433\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e (\u043f\u0440\u043e\u0442\u0435, \u043d\u0430\u043f\u0435\u0432\u043d\u043e, \u043a\u0440\u0430\u0449\u0435 \u0446\u0435 \u0440\u043e\u0431\u0438\u0442\u0438 \u043d\u0430 \u0435\u0442\u0430\u043f\u0456 \u0433\u0435\u043d\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u043e\u0434\u0443?).<\/p>\n<h3>\u0414\u043e\u0441\u0456 \u0440\u043e\u0431\u0438\u043c\u043e \u043f\u043e\u043c\u0438\u043b\u043a\u0438<\/h3>\n<p>\u041b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0435\u0432\u043d\u0438\u0442\u0438\u0441\u044f, \u0449\u043e \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u043b\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0456 \u0440\u043e\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u0456 \u0432\u0438\u0449\u0435 \u043f\u043e\u043c\u0438\u043b\u043a\u0438 :-)<\/p>\n<p>\u041e\u0442\u0436\u0435, \u043c\u0438 \u043c\u0430\u0454\u043c\u043e Abstract Syntax Tree \u0434\u043b\u044f \u043d\u0430\u0448\u043e\u0457 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0457, \u0456 \u0446\u0435 \u0434\u0435\u0440\u0435\u0432\u043e &#171;\u0432\u0430\u043b\u0456\u0434\u043d\u0435&#187; \u0437 \u043b\u0435\u043a\u0441\u0438\u0447\u043d\u043e\u0457, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u043d\u043e\u0457 \u0442\u0430 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u043e\u0457 \u0442\u043e\u0447\u043a\u0438 \u0437\u043e\u0440\u0443. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e <strong><em><a href=\"?page_id=25\">\u0413\u0435\u043d\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043a\u043e\u0434\u0443<\/a><\/em><\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430 \u0446\u044c\u043e\u043c\u0443 \u043a\u0440\u043e\u0446\u0456 \u043c\u0438 \u0445\u043e\u0447\u0435\u043c\u043e \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e \u043d\u0430 \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0441\u0442\u044c \u043b\u043e\u0433\u0456\u0447\u043d\u0438\u0445 \u043f\u043e\u043c\u0438\u043b\u043e\u043a. \u0429\u043e \u0441\u0430\u0432\u043c\u0435 \u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u044f\u0442\u0438\u043c\u0435\u043c\u043e? \u042f \u043f\u0440\u043e\u043f\u043e\u043d\u0443\u0436 \u0442\u0430\u043a\u0456 \u0442\u0435\u0441\u0442\u0438: \u041a\u043e\u0436\u0435\u043d \u043a\u043b\u0430\u0441 \u041f\u041e\u0412\u0418\u041d\u0415\u041d \u043c\u0430\u0442\u0438 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f &#171;rate&#171;. \u041a\u043e\u0436\u0435\u043d \u043a\u043b\u0430\u0441 \u041f\u041e\u0412\u0418\u041d\u0415\u041d \u043c\u0430\u0442\u0438 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f &#171;parent&#171;, \u0432\u043e\u043d\u043e \u041f\u041e\u0412\u0418\u041d\u041d\u041e \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0430 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043b\u0430\u0441. \u041c\u0438 \u0441\u0442\u0432\u043e\u0440\u0438\u043c\u043e \u043f\u0456\u0434\u043a\u043b\u0430\u0441 \u043a\u043b\u0430\u0441\u0443 spark.GenericASTTraversal, \u044f\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0434\u0438\u0432\u043b\u044f\u0442\u0438\u043c\u0435\u0442\u044c\u0441\u044f &hellip; <a href=\"https:\/\/brownian.org.ua\/?page_id=24\" class=\"more-link\"><span>Continue reading<span class=\"screen-reader-text\">\u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0456\u0437<\/span><\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":19,"menu_order":8,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/pages\/24"}],"collection":[{"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/brownian.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=24"}],"version-history":[{"count":0,"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/pages\/24\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/brownian.org.ua\/index.php?rest_route=\/wp\/v2\/pages\/19"}],"wp:attachment":[{"href":"https:\/\/brownian.org.ua\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}