{"id":227241,"date":"2014-07-02T21:22:03","date_gmt":"2014-07-02T17:22:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=227241"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=227241","title":{"rendered":"<span class=\"post_title\">\u041d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u043c<\/span>"},"content":{"rendered":"<div class=\"content html_format\">       <a href=\"http:\/\/www.crockford.com\/\">\u0414\u0443\u0433\u043b\u0430\u0441 \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434<\/a><\/p>\n<p>  2007-02-21  <\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412 1973 \u0433\u043e\u0434\u0443 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u043e\u043c \u0441\u0438\u043c\u043f\u043e\u0437\u0438\u0443\u043c\u0435 \u00ab\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (<a href=\"http:\/\/www.sigplan.org\/conferences\/popl\/main\">Principles of Programming Languages Symposium<\/a>) <a href=\"http:\/\/boole.stanford.edu\/pratt.html\">\u0412\u043e\u043d \u041f\u0440\u0430\u0442\u0442<\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0442\u0430\u0442\u044c\u044e \u00ab\u041d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u00bb (<a href=\"http:\/\/portal.acm.org\/citation.cfm?id=512931\">Top Down Operator Precedence<\/a>). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u041f\u0440\u0430\u0442\u0442 \u043e\u043f\u0438\u0441\u0430\u043b \u043c\u0435\u0442\u043e\u0434 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"http:\/\/en.wikipedia.org\/wiki\/Robert_W._Floyd\">\u0424\u043b\u043e\u0439\u0434\u0430<\/a>. \u041c\u0435\u0442\u043e\u0434 \u041f\u0440\u0430\u0442\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u0434\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u0430\u0442\u0442 \u0437\u0430\u044f\u0432\u0438\u043b, \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0441\u0442 \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u043d\u0435\u043e\u0431\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0438 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043e\u043a. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u0435\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u0435\u0433\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442? \u0412 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u041f\u0440\u0430\u0442\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0411\u041d\u0424-\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0438\u0445 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0442\u0435\u043e\u0440\u0435\u043c\u044b \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b \u0437\u0430\u043d\u044f\u043b\u0438 \u043d\u0438\u0448\u0443 \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435: \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043a\u0443\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0421\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u041f\u0440\u0430\u0442\u0442 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Lisp \u0438 \u0438\u0433\u0440\u0430\u044e\u0447\u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u043f\u043e \u043f\u043e\u0442\u043e\u043a\u0443 \u043b\u0435\u043a\u0441\u0435\u043c. \u041d\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0446\u0435\u043d\u044f\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 Lisp-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043f\u043e\u0432\u0435\u0434\u0443\u044e\u0442 \u0441\u043f\u0430\u0440\u0442\u0430\u043d\u0441\u043a\u0438\u0439 \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Lisp \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443 \u0431\u043e\u0433\u0430\u0442\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432 \u0441\u0442\u0438\u043b\u0435 ALGOL: <a href=\"http:\/\/its.svensson.org\/DOC%3BCGOL\">CGOL \u041f\u0440\u0430\u0442\u0442\u0430<\/a>, <a href=\"http:\/\/www.softwarepreservation.org\/projects\/LISP\/lisp2_family\/\">Lisp-2<\/a>, <a href=\"http:\/\/i.stanford.edu\/pub\/cstr\/reports\/cs\/tr\/68\/92\/CS-TR-68-92.pdf\">MLISP<\/a>, <a href=\"http:\/\/www.opendylan.org\/\">Dylan<\/a>, <a href=\"http:\/\/www.researchgate.net\/publication\/220812814_CLISP_-_Conversational_LISP\">Interlisp&#8217;s Clisp<\/a>, <a href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/lisp.html\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u041c-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u041c\u0430\u043a\u043a\u0430\u0440\u0442\u0438<\/a> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c. \u0414\u043b\u044f Lisp-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432\u0430\u0436\u043d\u0435\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u043b\u044e\u0431\u0438\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c Lisp \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d. \u041c\u0435\u0442\u043e\u0434\u0443 \u041f\u0440\u0430\u0442\u0442\u0430 \u043d\u0443\u0436\u0435\u043d \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041f\u0440\u0430\u0442\u0442\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>JavaScript<\/h2>\n<p>  \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c JavaScript. JavaScript \u2014 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d \u044f\u0432\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043a \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0443 \u0421\u0438. \u042d\u0442\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u0438 \u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043b\u044e\u0431\u0438\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441.<\/p>\n<p>  JavaScript \u0435\u0449\u0451 \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d. \u0421\u0442\u0430\u0442\u044c\u044f \u041f\u0440\u0430\u0442\u0442\u0430 \u043f\u0440\u0435\u0434\u0432\u043e\u0441\u0445\u0438\u0449\u0430\u043b\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043d\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. JavaScript \u2014 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u041f\u0440\u0430\u0442\u0442\u0430. \u042f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043d\u0430 JavaScript.<\/p>\n<p>  \u041e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 JavaScript \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0438 \u043d\u0435 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0447\u0451\u0440\u0442 \u043d\u043e\u0433\u0443 \u0441\u043b\u043e\u043c\u0438\u0442. \u041d\u043e \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0431\u043b\u0435\u0441\u0442\u044f\u0449\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u0440\u0441\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 JavaScript. \u0418 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0441\u0435\u0440 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0430 \u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u043c JavaScript. \u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 JavaScript \u2014 \u044d\u0442\u043e \u0432\u0441\u0451 \u043b\u0443\u0447\u0448\u0435\u0435 \u0438\u0437 \u044f\u0437\u044b\u043a\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435:<\/p>\n<ul>\n<li>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u0412 \u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u043c JavaScript \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u044f\u043c\u0431\u0434\u0430-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/li>\n<li>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043d\u044b\u043c \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435\u0442. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0447\u043b\u0435\u043d \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f. \u041e\u0431\u044a\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0447\u043b\u0435\u043d\u044b \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/li>\n<li>\u041b\u0438\u0442\u0435\u0440\u0430\u043b\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u044d\u0442\u0430 \u043d\u043e\u0442\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u0430. \u041b\u0438\u0442\u0435\u0440\u0430\u043b\u044b JavaScript \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <a href=\"http:\/\/www.json.org\/\">JSON<\/a>.<\/li>\n<\/ul>\n<p>  \u041c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 JavaScript, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043b\u0435\u043a\u0441\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>Object.create<\/code> (\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0447\u043b\u0435\u043d\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430) \u0438 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432-\u043b\u0435\u043a\u0441\u0435\u043c. \u0414\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0443, \u043c\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u0435\u0440\u0435\u0432\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430.<\/p>\n<h2>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/h2>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u043b\u0435\u043a\u0441\u0435\u043c\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u043b\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440, \u0431\u0443\u0434\u0435\u0442 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0430 \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0442\u0438\u043f\u044b \u043b\u0435\u043a\u0441\u0435\u043c \u044f\u0437\u044b\u043a\u0430) \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 <code>symbol_table<\/code>.<\/p>\n<pre><code class=\"javascript\">var symbol_table = {};<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u0435\u043a\u0442 <code>original_symbol<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0415\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u044b. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 <code>nud<\/code> \u0438 <code>led<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0438\u043b\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f (binding power) \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u043e \u043d\u0438\u0436\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b\u00bb.<\/p>\n<pre><code class=\"javascript\">var original_symbol = {     nud: function () {         this.error(&quot;Undefined.&quot;);     },     led: function (left) {         this.error(&quot;Missing operator.&quot;);     } };<\/code><\/pre>\n<p>  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044b. \u041e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (<code>id<\/code>) \u0438 \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>bp<\/code>, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u043d\u0443\u043b\u044c), \u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e <code>id<\/code>. \u0415\u0441\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 <code>symbol_table<\/code>, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0435\u0433\u043e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442. \u0418\u043d\u0430\u0447\u0435 \u043e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d \u043e\u0442 <code>original_symbol<\/code>, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442. \u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>id<\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043b\u0435\u0432\u0443\u044e \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f (<code>lbp<\/code>) \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e \u0438\u0437 <code>original_symbol<\/code>.<\/p>\n<pre><code class=\"javascript\">var symbol = function (id, bp) {     var s = symbol_table[id];     bp = bp || 0;     if (s) {         if (bp &gt;= s.lbp) {             s.lbp = bp;         }     } else {         s = Object.create(original_symbol);         s.id = s.value = id;         s.lbp = bp;         symbol_table[id] = s;     }     return s; };<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u044f\u0432\u0438\u043c \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;:&quot;); symbol(&quot;;&quot;); symbol(&quot;,&quot;); symbol(&quot;)&quot;); symbol(&quot;]&quot;); symbol(&quot;}&quot;); symbol(&quot;else&quot;);<\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b <code>(end)<\/code> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043b\u0435\u043a\u0441\u0435\u043c. \u0421\u0438\u043c\u0432\u043e\u043b <code>(name)<\/code> \u2014 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0438\u043c\u0451\u043d, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0438\u043c\u0451\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u042f \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0432 \u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0441\u043a\u043e\u0431\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c\u0438 \u043b\u0435\u043a\u0441\u0435\u043c\u0430\u043c\u0438.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;(end)&quot;); symbol(&quot;(name)&quot;);<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041b\u0435\u043a\u0441\u0435\u043c\u044b<\/h2>\n<p>  \u041c\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0443\u0436\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <code>tokens<\/code> \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0445 \u043b\u0435\u043a\u0441\u0435\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0435 <code>type<\/code> (<code>&quot;name&quot;<\/code>, <code>&quot;string&quot;<\/code>, <code>&quot;number&quot;<\/code>, \u0438\u043b\u0438 <code>&quot;operator&quot;<\/code>), \u0438 \u043f\u043e\u043b\u0435 <code>value<\/code> (\u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u043e). \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>token<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043b\u0435\u043a\u0441\u0435\u043c\u0443.<\/p>\n<pre><code class=\"javascript\">var token;<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>advance<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0439 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>token<\/code>. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>id<\/code>, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043b\u0435\u043a\u0441\u0435\u043c\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b <code>(name)<\/code> \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041f\u043e\u043b\u0435 <code>arity<\/code> \u043d\u043e\u0432\u043e\u0439 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f \u043b\u0438\u0431\u043e <code>&quot;name&quot;<\/code>, \u043b\u0438\u0431\u043e <code>&quot;literal&quot;<\/code>, \u043b\u0438\u0431\u043e <code>&quot;operator&quot;<\/code>. \u0412\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0440\u043e\u043b\u0438 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u0430 <code>&quot;binary&quot;<\/code>, <code>&quot;unary&quot;<\/code> \u0438\u043b\u0438 <code>&quot;statement&quot;<\/code>.<\/p>\n<pre><code class=\"javascript\">var advance = function (id) {     var a, o, t, v;     if (id &amp;&amp; token.id !== id) {         token.error(&quot;Expected '&quot; + id + &quot;'.&quot;);     }     if (token_nr &gt;= tokens.length) {         token = symbol_table[&quot;(end)&quot;];         return;     }     t = tokens[token_nr];     token_nr += 1;     v = t.value;     a = t.type;     if (a === &quot;name&quot;) {         o = scope.find(v);     } else if (a === &quot;operator&quot;) {         o = symbol_table[v];         if (!o) {             t.error(&quot;Unknown operator.&quot;);         }     } else if (a === &quot;string&quot; || a ===  &quot;number&quot;) {         a = &quot;literal&quot;;         o = symbol_table[&quot;(literal)&quot;];     } else {         t.error(&quot;Unexpected token.&quot;);     }     token = Object.create(o);     token.value = v;     token.arity = a;     return token; };<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438<\/h2>\n<p>  \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u043e\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043c\u0451\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445). \u0412 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0412 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438 \u0432\u0440\u0435\u043c\u044f \u0435\u0451 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<p>  \u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 (scope) \u2014 \u044d\u0442\u043e \u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0432 \u043d\u0435\u043a\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435 \u0432\u0438\u0434\u043d\u0430 \u0437\u0430 \u0435\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<p>  \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>scope<\/code>.<\/p>\n<pre><code class=\"javascript\">var scope;<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u0435\u043a\u0442 <code>original_scope<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043e\u0434 <code>define<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041c\u0435\u0442\u043e\u0434 <code>define<\/code> \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043b\u0435\u043a\u0441\u0435\u043c\u0443-\u0438\u043c\u044f \u0432 \u043b\u0435\u043a\u0441\u0435\u043c\u0443-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e. \u041e\u043d \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0438\u043c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c.<\/p>\n<pre><code class=\"javascript\">var itself = function () {     return this; };  var original_scope = {     define: function (n) {         var t = this.def[n.value];         if (typeof t === &quot;object&quot;) {             n.error(t.reserved ?                 &quot;Already reserved.&quot; :                 &quot;Already defined.&quot;);         }         this.def[n.value] = n;         n.reserved = false;         n.nud      = itself;         n.led      = null;         n.std      = null;         n.lbp      = 0;         n.scope    = scope;         return n;     },<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <code>find<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438. \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0438\u0434\u0451\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043e\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>symbol_table[&quot;(name)&quot;]<\/code>. \u041c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435 \u0440\u0430\u0432\u043d\u043e <code>undefined<\/code> (\u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0431\u044b \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043d\u0435\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438) \u0438 \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0447\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e \u0431\u044b \u043d\u0430 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044e \u0441 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c).<\/p>\n<pre><code class=\"javascript\">    find: function (n) {             var e = this, o;             while (true) {                 o = e.def[n];                 if (o && typeof o !== 'function') {                     return e.def[n];                 }                 e = e.parent;                 if (!e) {                     o = symbol_table[n];                     return o && typeof o !== 'function' ?                             o : symbol_table[&quot;(name)&quot;];                 }             }         },<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <code>pop<\/code> \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439.<\/p>\n<pre><code class=\"javascript\">    pop: function () {         scope = this.parent;     },<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <code>reserve<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"javascript\">    reserve: function (n) {         if (n.arity !== &quot;name&quot; || n.reserved) {             return;         }         var t = this.def[n.value];         if (t) {             if (t.reserved) {                 return;             }             if (t.arity === &quot;name&quot;) {                 n.error(&quot;Already defined.&quot;);             }         }         this.def[n.value] = n;         n.reserved = true;     } };<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0441\u043b\u043e\u0432\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>if<\/code>), \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043b\u044e\u0431\u043e\u0435 \u0432\u0437\u044f\u0442\u043e\u0435 \u0438\u043c\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u044f\u0437\u044b\u043a\u0430, \u043b\u0438\u0431\u043e \u043a\u0430\u043a \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445. \u042d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044e \u044f\u0437\u044b\u043a\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432 \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c \u043d\u0435 \u043c\u0435\u0448\u0430\u044e\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0451\u043d.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u0431\u043b\u043e\u043a\u0430, \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>new_scope<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 <code>original_scope<\/code>.<\/p>\n<pre><code class=\"javascript\">var new_scope = function () {     var s = scope;     scope = Object.create(original_scope);     scope.def = {};     scope.parent = s;     return scope; };<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442<\/h2>\n<p>  \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043b\u0435\u043a\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u0445, \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u044c\u044f (\u0430 \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0435\u0449\u0451 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0442\u0438\u043f\u044b, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434). \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f: \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u043a \u043b\u0435\u0432\u043e\u043c\u0443 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0438\u043b\u0438 \u043a \u043f\u0440\u0430\u0432\u043e\u043c\u0443:<\/p>\n<p>  <code> d&nbsp;<\/code><i>A<\/i><code>&nbsp;e&nbsp;<\/code><i>B<\/i><code>&nbsp;f<\/code><\/p>\n<p>  \u0415\u0441\u043b\u0438 <i>A<\/i> \u0438 <i>B<\/i> \u2014 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u043d\u0434 <code>e<\/code>? \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 <code>(d <\/code><i>A<\/i><code> e) <\/code><i>B<\/i><code> f<\/code><br \/>  \u0438 <code>d <\/code><i>A<\/i><code> (e <\/code><i>B<\/i><code> f)<\/code>.<\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u0438. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043b\u0435\u043a\u0441\u0435\u043c \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0445\u0440\u0430\u043d\u044f\u0442 \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f (\u0438\u043b\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430), \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b <code>nud<\/code> (null denotation, \u043d\u0443\u043b\u044c-\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435) \u0438 <code>led<\/code> (left denotation, \u043b\u0435\u0432\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435). \u041c\u0435\u0442\u043e\u0434\u0443 <code>nud<\/code> \u043d\u0435\u0432\u0430\u0436\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0441\u0442\u043e\u044f\u0442 \u043b\u0435\u0432\u0435\u0435, \u0430 \u043c\u0435\u0442\u043e\u0434\u0443 <code>led<\/code> \u2014 \u0432\u0430\u0436\u043d\u043e. \u041c\u0435\u0442\u043e\u0434 <code>nud<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430\u043c\u0438) \u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438. \u041c\u0435\u0442\u043e\u0434 <code>led<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438. \u0423 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <code>nud<\/code> \u0438 <code>led<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0438\u043d\u0443\u0441 (<code>-<\/code>) \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u043c (\u0441\u043c\u0435\u043d\u0430 \u0437\u043d\u0430\u043a\u0430 \u0447\u0438\u0441\u043b\u0430), \u0442\u0430\u043a \u0438 \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u043c (\u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0431\u0430 \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u043b\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<table>\n<tr>\n<td>0<\/td>\n<td>\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0435\u0437 \u0441\u0432\u044f\u0437\u0438: <code>;<\/code> \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f: <code>=<\/code> \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td><code>?:<\/code><\/td>\n<\/tr>\n<tr>\n<td>30<\/td>\n<td><code>|| &amp;&amp;<\/code><\/td>\n<\/tr>\n<tr>\n<td>40<\/td>\n<td>\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: <code>===<\/code> \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td>50<\/td>\n<td><code>+ -<\/code><\/td>\n<\/tr>\n<tr>\n<td>60<\/td>\n<td><code>* \/<\/code><\/td>\n<\/tr>\n<tr>\n<td>70<\/td>\n<td>\u0443\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b: <code>!<\/code> \u0438 \u0442. \u0434.<\/td>\n<\/tr>\n<tr>\n<td>80<\/td>\n<td><code>. [ (<\/code><\/td>\n<\/tr>\n<\/table>\n<p>  <\/p>\n<h2>\u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u041f\u0440\u0430\u0442\u0442\u0430 \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>expression<\/code>. \u041e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u0430\u0432\u0443\u044e \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043b\u0435\u043a\u0441\u0435\u043c\u0430\u043c\u0438 \u0441\u043f\u0440\u0430\u0432\u0430.<\/p>\n<pre><code class=\"javascript\">var expression = function (rbp) {     var left;     var t = token;     advance();     left = t.nud();     while (rbp &lt; token.lbp) {         t = token;         advance();         left = t.led(left);     }     return left; }<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>expression<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>nud<\/code> \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u0435\u043a\u0441\u0435\u043c\u044b <code>token<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b. \u0417\u0430\u0442\u0435\u043c, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043f\u0440\u0430\u0432\u0430\u044f \u0441\u0438\u043b\u0430 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043b\u0435\u0432\u0430\u044f \u0441\u0438\u043b\u0430 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043b\u0435\u043a\u0441\u0435\u043c\u044b, \u0443 \u043d\u0435\u0451 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <code>led<\/code>. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u0438 \u043f\u043e\u0441\u0442\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434\u044b <code>nud<\/code> \u0438 <code>led<\/code> \u0441\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>expression<\/code>.<\/p>\n<h2>\u0418\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/h2>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>+<\/code> \u2014 \u044d\u0442\u043e \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>led<\/code>, \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0432 \u0434\u0435\u0440\u0435\u0432\u043e, \u0434\u0432\u0435 \u0432\u0435\u0442\u0432\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e (<code>first<\/code> \u0438 <code>second<\/code>) \u2014 \u044d\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b \u0441\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u0437\u043d\u0430\u043a\u0430 <code>+<\/code>. \u041c\u0435\u0442\u043e\u0434 <code>led<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043b\u0435\u0432\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u0430 \u043f\u0440\u0430\u0432\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 <code>expression<\/code>.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;+&quot;, 50).led = function (left) {     this.first = left;     this.second = expression(50);     this.arity = &quot;binary&quot;;     return this; };<\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b <code>*<\/code> \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>+<\/code> \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>id<\/code> \u0438 \u0441\u0438\u043b\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f. \u041e\u043d \u043a\u0440\u0435\u043f\u0447\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u0441\u0438\u043b\u0430 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0448\u0435.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;*&quot;, 60).led = function (left) {     this.first = left;     this.second = expression(60);     this.arity = &quot;binary&quot;;     return this; };<\/code><\/pre>\n<p>  \u041d\u0435 \u0432\u0441\u0435 \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0431\u0443\u0434\u0443\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0440\u0430\u0431\u043e\u0442\u0443, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>infix<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>infix<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <code>id<\/code>, \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>led<\/code>. \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u0430, <code>infix<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>led<\/code> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432.<\/p>\n<pre><code class=\"javascript\">var infix = function (id, bp, led) {     var s = symbol(id, bp);     s.led = led || function (left) {         this.first = left;         this.second = expression(bp);         this.arity = &quot;binary&quot;;         return this;     };     return s; }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0432 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435:<\/p>\n<pre><code class=\"javascript\">infix(&quot;+&quot;, 50); infix(&quot;-&quot;, 50); infix(&quot;*&quot;, 60); infix(&quot;\/&quot;, 60);<\/code><\/pre>\n<p>  <code>===<\/code> \u2014 \u044d\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432 JavaScript.<\/p>\n<pre><code class=\"javascript\">infix(&quot;===&quot;, 40); infix(&quot;!==&quot;, 40); infix(&quot;&lt;&quot;, 40); infix(&quot;&lt;=&quot;, 40); infix(&quot;&gt;&quot;, 40); infix(&quot;&gt;=&quot;, 40);<\/code><\/pre>\n<p>  \u0422\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0440\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 <code>?<\/code> \u0438 <code>:<\/code>. \u042d\u0442\u043e \u043d\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>led<\/code>.<\/p>\n<pre><code class=\"javascript\">infix(&quot;?&quot;, 20, function (left) {     this.first = left;     this.second = expression(0);     advance(&quot;:&quot;);     this.third = expression(0);     this.arity = &quot;ternary&quot;;     return this; });<\/code><\/pre>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u043e\u0447\u043a\u0430 (<code>.<\/code>) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0447\u043b\u0435\u043d\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0421\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0438\u043c\u044f, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u043b\u0438\u0442\u0435\u0440\u0430\u043b.<\/p>\n<pre><code class=\"javascript\">infix(&quot;.&quot;, 80, function (left) {     this.first = left;     if (token.arity !== &quot;name&quot;) {         token.error(&quot;Expected a property name.&quot;);     }     token.arity = &quot;literal&quot;;     this.second = token;     this.arity = &quot;binary&quot;;     advance();     return this; });<\/code><\/pre>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>[<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0447\u043b\u0435\u043d\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0417\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 <code>]<\/code>.<\/p>\n<pre><code class=\"javascript\">infix(&quot;[&quot;, 80, function (left) {     this.first = left;     this.second = expression(0);     this.arity = &quot;binary&quot;;     advance(&quot;]&quot;);     return this; });<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043b\u0435\u0432\u043e\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 || \u0438 &amp;&amp;), \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0432 \u043f\u0440\u0430\u0432\u0443\u044e \u0441\u0438\u043b\u0443 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f.<\/p>\n<pre><code class=\"javascript\">var infixr = function (id, bp, led) {     var s = symbol(id, bp);     s.led = led || function (left) {         this.first = left;         this.second = expression(bp - 1);         this.arity = &quot;binary&quot;;         return this;     };     return s; }<\/code><\/pre>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>&amp;&amp;<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434, \u0435\u0441\u043b\u0438 \u043e\u043d \u043b\u043e\u0436\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>||<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434, \u0435\u0441\u043b\u0438 \u043e\u043d \u0438\u0441\u0442\u0438\u043d\u0435\u043d, \u0438\u043d\u0430\u0447\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439. \u041b\u043e\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e <code>0<\/code>, \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <code>&quot;&quot;<\/code>, <code>false<\/code> \u0438\u043b\u0438 <code>null<\/code>. \u041b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043b\u044e\u0431\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442) \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c.<\/p>\n<pre><code class=\"javascript\">infixr(&quot;&amp;&amp;&quot;, 30); infixr(&quot;||&quot;, 30);<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/h2>\n<p>  \u041a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u043d\u0444\u0438\u0441\u043a\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u041f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0430\u0432\u043e\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b. \u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043b\u0435\u0432\u043e\u0439 \u0441\u0438\u043b\u044b \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u0441 \u0447\u0435\u043c \u0441\u043b\u0435\u0432\u0430. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438.<\/p>\n<pre><code class=\"javascript\">var prefix = function (id, nud) {     var s = symbol(id);     s.nud = nud || function () {         scope.reserve(this);         this.first = expression(70);         this.arity = &quot;unary&quot;;         return this;     };     return s; } prefix(&quot;-&quot;); prefix(&quot;!&quot;); prefix(&quot;typeof&quot;);<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <code>nud<\/code> \u0434\u043b\u044f \u0441\u043a\u043e\u0431\u043a\u0438 <code>(<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 <code>advance(&quot;)&quot;)<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u043d\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443 <code>)<\/code>. \u0421\u0430\u043c\u0430 \u043b\u0435\u043a\u0441\u0435\u043c\u0430 <code>(<\/code> \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e <code>nud<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u043a\u043e\u0431\u043e\u043a.<\/p>\n<pre><code class=\"javascript\">prefix(&quot;(&quot;, function () {     var e = expression(0);     advance(&quot;)&quot;);     return e; });<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>  \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>infixr<\/code>. \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>assignment<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u043a\u043e\u0435-\u0447\u0442\u043e: \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f lvalue, \u0442\u043e \u0435\u0441\u0442\u044c \u0435\u043c\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0435 <code>assignment<\/code>, \u0447\u0442\u043e\u0431\u044b \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f.  <\/p>\n<pre><code class=\"javascript\">var assignment = function (id) {     return infixr(id, 10, function (left) {         if (left.id !== &quot;.&quot; &amp;&amp; left.id !== &quot;[&quot; &amp;&amp;                 left.arity !== &quot;name&quot;) {             left.error(&quot;Bad lvalue.&quot;);         }         this.first = left;         this.second = expression(9);         this.assignment = true;         this.arity = &quot;binary&quot;;         return this;     }); };  assignment(&quot;=&quot;); assignment(&quot;+=&quot;); assignment(&quot;-=&quot;);<\/code><\/pre>\n<p>  \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435: \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>assignment<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>infixr<\/code>, \u0430 <code>infixr<\/code> \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>symbol<\/code>.<\/p>\n<h2>\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b<\/h2>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>constant<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u044f\u0437\u044b\u043a\u0430. \u041c\u0435\u0442\u043e\u0434 <code>nud<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0435\u043a\u0441\u0435\u043c\u0443-\u0438\u043c\u044f \u0432 \u043b\u0435\u043a\u0441\u0435\u043c\u0443-\u043b\u0438\u0442\u0435\u0440\u0430\u043b.<\/p>\n<pre><code class=\"javascript\">var constant = function (s, v) {     var x = symbol(s);     x.nud = function () {         scope.reserve(this);         this.value = symbol_table[this.id].value;         this.arity = &quot;literal&quot;;         return this;     };     x.value = v;     return x; };  constant(&quot;true&quot;, true); constant(&quot;false&quot;, false); constant(&quot;null&quot;, null); constant(&quot;pi&quot;, 3.141592653589793);<\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b <code>(literal)<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u0438 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432. \u041c\u0435\u0442\u043e\u0434 <code>nud<\/code> \u043b\u0435\u043a\u0441\u0435\u043c\u044b-\u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0430\u043c\u0443 \u043b\u0435\u043a\u0441\u0435\u043c\u0443.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;(literal)&quot;).nud = itself;<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u043c\u0435\u0442\u043e\u0434 \u041f\u0440\u0430\u0442\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f (statements), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u043a\u0430\u043a \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043a \u043b\u0435\u043a\u0441\u0435\u043c\u0430\u043c: <code>std<\/code> (statement denotation, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f). \u041c\u0435\u0442\u043e\u0434 <code>std<\/code> \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 <code>nud<\/code>, \u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>statement<\/code> \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043b\u0435\u043a\u0441\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u0435\u0442\u043e\u0434 <code>std<\/code>, \u043b\u0435\u043a\u0441\u0435\u043c\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0418\u043d\u0430\u0447\u0435 \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439. \u0414\u043b\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438\u043b\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"javascript\">var statement = function () {     var n = token, v;     if (n.std) {         advance();         scope.reserve(n);         return n.std();     }     v = expression(0);     if (!v.assignment &amp;&amp; v.id !== &quot;(&quot;) {         v.error(&quot;Bad expression statement.&quot;);     }     advance(&quot;;&quot;);     return v; };<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>statements<\/code> \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442 \u043b\u0435\u043a\u0441\u0435\u043c\u0443 <code>(end)<\/code> \u0438\u043b\u0438 <code>}<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0431\u043b\u043e\u043a\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 <code>null<\/code>, \u0435\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.<\/p>\n<pre><code class=\"javascript\">var statements = function () {     var a = [], s;     while (true) {         if (token.id === &quot;}&quot; || token.id === &quot;(end)&quot;) {             break;         }         s = statement();         if (s) {             a.push(s);         }     }     return a.length === 0 ? null : a.length === 1 ? a[0] : a; };<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>stmt<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u043d\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <code>id<\/code> \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>std<\/code>.<\/p>\n<pre><code class=\"javascript\">var stmt = function (s, f) {     var x = symbol(s);     x.std = f;     return x; };<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435-\u0431\u043b\u043e\u043a \u2014 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0412 \u043e\u0431\u044b\u0447\u043d\u043e\u043c JavaScript \u043d\u0435\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u043e\u0432, \u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u043c JavaScript \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442.<\/p>\n<pre><code class=\"javascript\">stmt(&quot;{&quot;, function () {     new_scope();     var a = statements();     advance(&quot;}&quot;);     scope.pop();     return a; });<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>block<\/code> \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0431\u043b\u043e\u043a.  <\/p>\n<pre><code class=\"javascript\">var block = function () {     var t = token;     advance(&quot;{&quot;);     return t.std(); };<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>var<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435. \u0417\u0430 \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u043a \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 <code>=<\/code> \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<pre><code class=\"javascript\">stmt(&quot;var&quot;, function () {     var a = [], n, t;     while (true) {         n = token;         if (n.arity !== &quot;name&quot;) {             n.error(&quot;Expected a new variable name.&quot;);         }         scope.define(n);         advance();         if (token.id === &quot;=&quot;) {             t = token;             advance(&quot;=&quot;);             t.first = n;             t.second = expression(0);             t.arity = &quot;binary&quot;;             a.push(t);         }         if (token.id !== &quot;,&quot;) {             break;         }         advance(&quot;,&quot;);     }     advance(&quot;;&quot;);     return a.length === 0 ? null : a.length === 1 ? a[0] : a; });<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>while<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0446\u0438\u043a\u043b. \u041e\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0438 \u0431\u043b\u043e\u043a.<\/p>\n<pre><code class=\"javascript\">stmt(&quot;while&quot;, function () {     advance(&quot;(&quot;);     this.first = expression(0);     advance(&quot;)&quot;);     this.second = block();     this.arity = &quot;statement&quot;;     return this; });<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>if<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u043e\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b <code>else<\/code>, \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>if<\/code>.<\/p>\n<pre><code class=\"javascript\">stmt(&quot;if&quot;, function () {     advance(&quot;(&quot;);     this.first = expression(0);     advance(&quot;)&quot;);     this.second = block();     if (token.id === &quot;else&quot;) {         scope.reserve(token);         advance(&quot;else&quot;);         this.third = token.id === &quot;if&quot; ? statement() : block();     } else {         this.third = null;     }     this.arity = &quot;statement&quot;;     return this; });<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>break<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0446\u0438\u043a\u043b \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<pre><code class=\"javascript\">stmt(&quot;break&quot;, function () {     advance(&quot;;&quot;);     if (token.id !== &quot;}&quot;) {         token.error(&quot;Unreachable statement.&quot;);     }     this.arity = &quot;statement&quot;;     return this; });<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>return<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438).<\/p>\n<pre><code class=\"javascript\">stmt(&quot;return&quot;, function () {     if (token.id !== &quot;;&quot;) {         this.first = expression(0);     }     advance(&quot;;&quot;);     if (token.id !== &quot;}&quot;) {         token.error(&quot;Unreachable statement.&quot;);     }     this.arity = &quot;statement&quot;;     return this; });<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f (\u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043c\u043e\u0433\u043b\u0430 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e), \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0451\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0438 \u0442\u0435\u043b\u043e \u2014 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445. \u0423 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"javascript\">prefix(&quot;function&quot;, function () {     var a = [];     new_scope();     if (token.arity === &quot;name&quot;) {         scope.define(token);         this.name = token.value;         advance();     }     advance(&quot;(&quot;);     if (token.id !== &quot;)&quot;) {         while (true) {             if (token.arity !== &quot;name&quot;) {                 token.error(&quot;Expected a parameter name.&quot;);             }             scope.define(token);             a.push(token);             advance();             if (token.id !== &quot;,&quot;) {                 break;             }             advance(&quot;,&quot;);         }     }     this.first = a;     advance(&quot;)&quot;);     advance(&quot;{&quot;);     this.second = statements();     advance(&quot;}&quot;);     this.arity = &quot;function&quot;;     scope.pop();     return this; });<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>(<\/code>. \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043b\u0435\u0432\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0441\u0435\u0447\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439.<\/p>\n<pre><code class=\"javascript\">infix(&quot;(&quot;, 80, function (left) {     var a = [];     if (left.id === &quot;.&quot; || left.id === &quot;[&quot;) {         this.arity = &quot;ternary&quot;;         this.first = left.first;         this.second = left.second;         this.third = a;     } else {         this.arity = &quot;binary&quot;;         this.first = left;         this.second = a;         if ((left.arity !== &quot;unary&quot; || left.id !== &quot;function&quot;) &&                 left.arity !== &quot;name&quot; && left.id !== &quot;(&quot; &&                 left.id !== &quot;&&&quot; && left.id !== &quot;||&quot; && left.id !== &quot;?&quot;) {             left.error(&quot;Expected a variable name.&quot;);         }     }     if (token.id !== &quot;)&quot;) {         while (true)  {             a.push(expression(0));             if (token.id !== &quot;,&quot;) {                 break;             }             advance(&quot;,&quot;);         }     }     advance(&quot;)&quot;);     return this; });<\/code><\/pre>\n<p>  \u0421\u0438\u043c\u0432\u043e\u043b <code>this<\/code> \u2014 \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043d\u0435\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<pre><code class=\"javascript\">symbol(&quot;this&quot;).nud = function () {     scope.reserve(this);     this.arity = &quot;this&quot;;     return this; };<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041b\u0438\u0442\u0435\u0440\u0430\u043b\u044b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432<\/h2>\n<p>  \u041b\u0438\u0442\u0435\u0440\u0430\u043b \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2014 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438. \u041a\u0430\u0436\u0434\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f, \u0438 \u0432\u0441\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432.<\/p>\n<pre><code class=\"javascript\">prefix(&quot;[&quot;, function () {     var a = [];     if (token.id !== &quot;]&quot;) {         while (true) {             a.push(expression(0));             if (token.id !== &quot;,&quot;) {                 break;             }             advance(&quot;,&quot;);         }     }     advance(&quot;]&quot;);     this.first = a;     this.arity = &quot;unary&quot;;     return this; });<\/code><\/pre>\n<p>  \u041b\u0438\u0442\u0435\u0440\u0430\u043b \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440 \u0432 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438. \u041f\u0430\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435\u043c (<code>:<\/code>). \u041a\u043b\u044e\u0447 \u2014 \u044d\u0442\u043e \u043b\u0438\u0442\u0435\u0440\u0430\u043b \u0438\u043b\u0438 \u0438\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043b\u0438\u0442\u0435\u0440\u0430\u043b.<\/p>\n<pre><code class=\"javascript\">prefix(&quot;{&quot;, function () {     var a = [];     if (token.id !== &quot;}&quot;) {         while (true) {             var n = token;             if (n.arity !== &quot;name&quot; &amp;&amp; n.arity !== &quot;literal&quot;) {                 token.error(&quot;Bad key.&quot;);             }             advance();             advance(&quot;:&quot;);             var v = expression(0);             v.key = n.value;             a.push(v);             if (token.id !== &quot;,&quot;) {                 break;             }             advance(&quot;,&quot;);         }     }     advance(&quot;}&quot;);     this.first = a;     this.arity = &quot;unary&quot;;     return this; });<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041e \u0447\u0451\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u0447\u0442\u043e \u043f\u043e\u0434\u0435\u043b\u0430\u0442\u044c<\/h2>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0435\u0440\u0435\u0432\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u0418, \u043a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0438\u043b\u0438\u0439 \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u0440\u0441\u0435\u0440.<\/p>\n<p>  \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>infix<\/code> \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u043a\u043e\u0434\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B2%D1%91%D1%80%D1%82%D0%BA%D0%B0_%D0%BA%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82\">\u0441\u0432\u0451\u0440\u0442\u043a\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442<\/a> \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>for<\/code>, <code>switch<\/code> \u0438 <code>try<\/code>), \u043c\u0435\u0442\u043a\u0438, \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u0443\u0447\u0443 \u043d\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u044f\u0437\u044b\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u043c. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0430\u043a \u0436\u0435 \u043b\u0435\u0433\u043a\u043e, \u043a\u0430\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<p>  <a href=\"http:\/\/javascript.crockford.com\/tdop\/index.html\">\u0418\u0441\u043f\u044b\u0442\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438 \u043f\u0430\u0440\u0441\u0435\u0440, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/a><\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"http:\/\/jslint.com\/\">JSLint<\/a>.<\/p>\n<p>  <b>\u041e\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430:<\/b> \u043a\u043e\u0432\u044b\u0440\u044f\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 JSLint \u0438 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u044d\u0442\u043e\u0439 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442. \u041f\u0430\u0440\u0441\u0435\u0440 \u0432 JSLint \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439, \u043c\u043e\u0449\u043d\u044b\u0439 \u0438 \u043b\u0435\u0433\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"http:\/\/habrahabr.ru\/users\/kvie\/\" class=\"user_link\">KVie<\/a> \u0437\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430.   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/227241\/\"> http:\/\/habrahabr.ru\/post\/227241\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">       <a href=\"http:\/\/www.crockford.com\/\">\u0414\u0443\u0433\u043b\u0430\u0441 \u041a\u0440\u043e\u043a\u0444\u043e\u0440\u0434<\/a><\/p>\n<p>  2007-02-21  <\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412 1973 \u0433\u043e\u0434\u0443 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u043e\u043c \u0441\u0438\u043c\u043f\u043e\u0437\u0438\u0443\u043c\u0435 \u00ab\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (<a href=\"http:\/\/www.sigplan.org\/conferences\/popl\/main\">Principles of Programming Languages Symposium<\/a>) <a href=\"http:\/\/boole.stanford.edu\/pratt.html\">\u0412\u043e\u043d \u041f\u0440\u0430\u0442\u0442<\/a> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0442\u0430\u0442\u044c\u044e \u00ab\u041d\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u00bb (<a href=\"http:\/\/portal.acm.org\/citation.cfm?id=512931\">Top Down Operator Precedence<\/a>). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u041f\u0440\u0430\u0442\u0442 \u043e\u043f\u0438\u0441\u0430\u043b \u043c\u0435\u0442\u043e\u0434 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043b\u0443\u0447\u0448\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u043f\u0443\u0441\u043a\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"http:\/\/en.wikipedia.org\/wiki\/Robert_W._Floyd\">\u0424\u043b\u043e\u0439\u0434\u0430<\/a>. \u041c\u0435\u0442\u043e\u0434 \u041f\u0440\u0430\u0442\u0442\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u0443\u0441\u043a, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u0434\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u0430\u0442\u0442 \u0437\u0430\u044f\u0432\u0438\u043b, \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0441\u0442 \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u043d\u0435\u043e\u0431\u044b\u0447\u0430\u0439\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0438 \u043e\u0447\u0435\u043d\u044c \u0433\u0438\u0431\u043e\u043a. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432.<\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0435\u0437\u0443\u043f\u0440\u0435\u0447\u0435\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c \u0435\u0433\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0442? \u0412 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u041f\u0440\u0430\u0442\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b, \u0447\u0442\u043e \u0411\u041d\u0424-\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 \u0438 \u0438\u0445 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0442\u0435\u043e\u0440\u0435\u043c\u044b \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u044b \u0437\u0430\u043d\u044f\u043b\u0438 \u043d\u0438\u0448\u0443 \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044e \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435: \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043a\u0443\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u0421\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u041f\u0440\u0430\u0442\u0442 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Lisp \u0438 \u0438\u0433\u0440\u0430\u044e\u0447\u0438 \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f \u043f\u043e \u043f\u043e\u0442\u043e\u043a\u0443 \u043b\u0435\u043a\u0441\u0435\u043c. \u041d\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0446\u0435\u043d\u044f\u0442\u0441\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 Lisp-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u043f\u043e\u0432\u0435\u0434\u0443\u044e\u0442 \u0441\u043f\u0430\u0440\u0442\u0430\u043d\u0441\u043a\u0438\u0439 \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Lisp \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u044d\u0442\u043e\u043c\u0443 \u044f\u0437\u044b\u043a\u0443 \u0431\u043e\u0433\u0430\u0442\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432 \u0441\u0442\u0438\u043b\u0435 ALGOL: <a href=\"http:\/\/its.svensson.org\/DOC%3BCGOL\">CGOL \u041f\u0440\u0430\u0442\u0442\u0430<\/a>, <a href=\"http:\/\/www.softwarepreservation.org\/projects\/LISP\/lisp2_family\/\">Lisp-2<\/a>, <a href=\"http:\/\/i.stanford.edu\/pub\/cstr\/reports\/cs\/tr\/68\/92\/CS-TR-68-92.pdf\">MLISP<\/a>, <a href=\"http:\/\/www.opendylan.org\/\">Dylan<\/a>, <a href=\"http:\/\/www.researchgate.net\/publication\/220812814_CLISP_-_Conversational_LISP\">Interlisp&#8217;s Clisp<\/a>, <a href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/lisp.html\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u041c-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u041c\u0430\u043a\u043a\u0430\u0440\u0442\u0438<\/a> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0438\u0441\u044c. \u0414\u043b\u044f Lisp-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432\u0430\u0436\u043d\u0435\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u043b\u044e\u0431\u0438\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c Lisp \u0442\u0430\u043a \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d. \u041c\u0435\u0442\u043e\u0434\u0443 \u041f\u0440\u0430\u0442\u0442\u0430 \u043d\u0443\u0436\u0435\u043d \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u041f\u0440\u0430\u0442\u0442\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-227241","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/227241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=227241"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/227241\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=227241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=227241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=227241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}