34-рд▓рд╛рдЗрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреИрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛



рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рднрд╛рд╖рд╛ рдХреНрдпрд╛ рд╣реИ:


рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдХреЙрдкреА рдХреА рдЧрдИ рд╣реИ

рд╕реНрдЯреИрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреИрдХ рдХрд╛ рдПрдХ рдорд╢реАрди рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рднрд╛рд╖рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреАред рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рд╕рдВрдЦреНрдпрд╛ред



рдорд┐рд▓рд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

value name = operations





рдЬрд╣рд╛рдБ рдорд╛рди рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдорд╛рди рд╣реИ, рдПрдХ рдХреНрд░рд┐рдпрд╛ рдлрдВрдХреНрд╢рди рдмреЙрдбреА рд╣реИред



рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рд╛рди рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:

name = operations





рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдЖрдк рдирд┐рд░рдВрддрд░ рдСрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЙрд╕ рдСрдкрд░реЗрдВрдб рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рдд, рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ред



рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

-> name





рдорд╛рдирдХ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ + - * / рд╣реЛрдЧрд╛



рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ 1 рддрдХ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:

++ = op 1 +







рд▓реЗрдХрд┐рди рддрдереНрдпрд╛рддреНрдордХ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдореВрдиреЗ рдФрд░ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧреА:

0 ! = 1

! = op 1 - ! op *












рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдХреЗрд╡рд▓ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░реЗрдЧреАред рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣рдо рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "рдХрдВрд╕реЛрд▓" рдореЗрдВ рд╕реНрдЯреИрдХ рдпрд╛ 'рдирд┐рд▓' рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ



рдкрд╣рд▓рд╛ рдХрджрдо


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рд╣рдо рд╕рдВрджрд░реНрдн рдХреЛ рдПрдХ рд░рдЪрдирд╛рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ HContext рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВрдЧреЗ



HContext = function(){

this.stack = []; //

this.vars = []; //

this.funs = []; //



}








рдлрд┐рд░ рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди 'рд░рди' рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рддрд░реНрдХ рдХреЛрдб рд╣реЛрдЧрд╛, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЦреБрдж рдЗрд╕реЗ рдЯреЛрдХрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред



this.run = function(code){

lexems = code.split(' ');

if(lexems.oneOf('=')){

this.define(lexems);}else{

this.exec(lexems,'');}}







рдиреЛрдЯ: рдЬреЛ рд▓реЛрдЧ рдХреЛрдб рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рд╡рдирдСрдл рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рддрдерд╛рдХрдерд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрдврд╝рд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ "рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВред" рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЖрдЧреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдЕрдм рд╣рдо рдПрдХ рдПрдХреНрдЬреАрдХреНрдпреВрдЯ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрджрд┐ рдСрдк рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдорд╛рди 3 рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред



рдлрд┐рд░ рдПрдХ рд▓реВрдк рдмрдирд╛рдПрдВ рдЬреЛ рдЯреЛрдХрди рдХреА рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрджрдо рд░рдЦреЗрдЧрд╛ рдФрд░, рдЯреЛрдХрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрд╢рди рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдпрд╣ 'рдСрдк' рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рдкрд░ рд╡реИрд▓реНрдпреВ рдСрдк рд░рдЦреЗрдВред

рдпрджрд┐ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ - рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреЗрдВред

рдпрджрд┐ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреЗрдВред

рдпрджрд┐ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рддреЛ рдЙрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди

рдпрджрд┐ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ - рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред рдореИрдереЛрдк рд╕рдорд╛рд░реЛрд╣

рдФрд░ рдпрджрд┐ рдпрд╣ рд╣реИ -> - 1 рд╕реЗ рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝рд╛рдПрдВ рдФрд░ рдПрдХ рдЪрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЯреЛрдХрди рдореВрд▓реНрдп рд╣реИред



this.exec = function(code,op){

op = op || 0;

for(var cp=0;cp<code.length;cp++){

if(code[cp]=='op'){this.stack.push(op)}

else if(code[cp].isNum()){this.stack.push(parseFloat(code[cp]))}

else if(this.vars[code[cp]] != undefined){this.stack.push(this.vars[code[cp]])}

else if(this.funs[code[cp]] != undefined){this.call(code[cp])}

else if(this.mathOps.oneOf(code[cp])){this.mathOp(code[cp])}

else if(code[cp] == '->'){cp++;this.vars[code[cp]]=this.stack.pop();}}}//









рдорда рд╕рдВрдЪрд╛рд▓рди




рдЖрдЗрдП рд╕рдВрднрд╡ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВред

this.mathOps = ['+','-','*','/'];







рдЕрдм рдПрдХ рдлрдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╢реАрд░реНрд╖ рджреЛ рдорд╛рди рд▓реЗрдЧрд╛ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдбрд╛рд▓ рджреЗрдЧрд╛ред



this.mathOp = function(op){

nums = [this.stack.pop(),this.stack.pop()];

this.stack.push(eval(nums[1] + ' ' + op + ' ' + nums[0]));}








рдХрд╛рд░реНрдпреЛрдВ


рдЕрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рднрдВрдбрд╛рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛ред

рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реВрдЪреА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ 'op' рдХреБрдВрдЬреА рд╡рд╛рд▓рд╛ рддрддреНрд╡ рдорд┐рд▓рд╛рди рдХреЗ рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдореЗрд▓ рдЦрд╛рддреЗ рд╣реЛрдВрдЧреЗ рдФрд░ рдХреБрдВрдЬреА рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реЛрдЧреАред



рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВрдЧреЗ:



this.define = function(code){

eq = code.pos('='); //

op = code[eq-2] || 'op'; // 2 = 'op'

name = code[eq-1]; // 1

cmds = code.slice(eq+1); // 1

if(this.funs[name] == undefined){this.funs[name] = [];} // ,

this.funs[name][op] = cmds; // }








рдФрд░ рдЕрдм рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЙрд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ (рдЕрдзрд┐рдХрд╛рдВрд╢, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЛрдбрд╛рдВрддрд░рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╛рдо рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗ)



this.call = function(fun){

op = this.stack.pop(); //

cd = this.funs[fun][op] || this.funs[fun]['op']; //

this.exec(cd,op);} //








рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:


рдЫрджреНрдо рдХрдВрд╕реЛрд▓ рдпрд╣рд╛рдБ рд╣реИ ред рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рднреА рд╣реИрдВред



All Articles