Advertisement
Lusien_Lashans

neiman

Apr 8th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function main() {
  2.      fso = new ActiveXObject("Scripting.FileSystemObject")
  3.      ts = fso.OpenTextFile(WSH.arguments(0))
  4.      inputData = ts.ReadAll()
  5.    
  6.     if (inputData.length === 0){
  7.         WSH.echo('Wrong input file!')
  8.         return;
  9.     }
  10.  
  11.     inputData += ' exit';
  12.  
  13.      mem = inputData.split(/\s+/);
  14.  
  15.      ip = 0;
  16.      dif = 0;
  17.     gg = 0;
  18.     wp = 0;
  19.  
  20.     for ( i = 0; i < mem.length; i++){
  21.         WSH.echo('in yacheika ', i, ' chranitsya ', mem[i]);
  22.     }
  23.     len = mem.length;
  24.  
  25.     while(mem[ip] !== 'exit'){
  26.         switch (mem[ip]){
  27.             case 'input':
  28.                 WSH.echo('Type number');
  29.                 mem[mem[ip + 1]] = parseFloat(WScript.StdIn.ReadLine());
  30.                 ip += 2;
  31.                 break;
  32.             case 'theLastProverka':
  33.                 if (mem[mem[ip+1]]<0)
  34.                     mem[mem[ip+1]]*=-1;
  35.                 ip+=2;
  36.                 break;
  37.             case 'output':
  38.                 WSH.echo('Result: ' + mem[mem[ip + 1]]);
  39.                 ip += 2;
  40.                 break;
  41.             case 'ifNegative':
  42.                 if (mem[mem[ip+1]] < 0){
  43.                     WSH.echo('number is negative');
  44.                     ip = 23;
  45.                 }
  46.                 else
  47.                     ip+=2;
  48.                 break;
  49.                    
  50.             case 'add':
  51.                 mem[mem[ip + 1]] = mem[mem[ip + 3]] + mem[mem[ip + 2]];
  52.                 ip += 4;
  53.                 break;
  54.             case 'multiply':
  55.                 mem[mem[ip + 1]] = mem[mem[ip + 3]] * mem[mem[ip + 2]];
  56.                 ip += 4;
  57.                 break;
  58.             case 'increase':
  59.                 mem[mem[ip + 1]]++;
  60.                 ip += 2;
  61.                 break;
  62.             case 'var':
  63.                 mem[mem[ip + 1]] = Number(mem[ip + 2]);
  64.                 ip += 3;
  65.                 break;
  66.             case 'dif':
  67.                 dif = mem[mem[ip + 1]] -  mem[mem[ip + 2]];
  68.                 ip += 3;
  69.                 break;
  70.             case 'repeat':
  71.                 if (dif > 0){
  72.                     ip = gg;
  73.                 }
  74.                 else
  75.                 {
  76.                     ip += 1;
  77.                 }
  78.                 break;
  79.             case 'if':
  80.                 if (dif === 0){
  81.                     ip = 23;
  82.                 }
  83.                 else
  84.                 {
  85.                     ip += 1;
  86.                 }
  87.                 break;
  88.             case 'until':
  89.                 gg = ip;
  90.                 ip+=1;
  91.                 break;
  92.             case 'exit':
  93.                 return;
  94.             case 'assign':
  95.                 mem[mem[ip + 1]] = mem[mem[ip + 2]];
  96.                 ip += 3;
  97.                 break;    
  98.             case 'mod':
  99.                 mem[mem[ip + 1]] = mem[mem[ip + 2]] % mem[mem[ip + 3]];
  100.                 ip += 4;
  101.                 break;
  102.             case 'eshe':
  103.                 ip = gg;
  104.                 ip+=1;
  105.                 break;
  106.         }
  107.     }
  108. }
  109.  
  110. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement