Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Array.prototype.findAndReturnIndex = function (element) {
- var array = Object(this);
- for (var i = 0; i < array.length; i++){
- if (array[i] === element)
- return i;
- }
- return -1;
- };
- function main() {
- var fso = new ActiveXObject("Scripting.FileSystemObject")
- var ts = fso.OpenTextFile(WSH.arguments(0))
- var inputData = ts.ReadAll()
- if (inputData.length === 0){
- WSH.echo('Wrong input file!')
- return;
- }
- inputData += ' exit';
- var memory = inputData.split(/\s+/);
- var ip = 0;
- var dif = 0;
- for (var i = 0; i < memory.length; i++){
- WSH.echo('В ячейке ', i, ' хранится ', memory[i]);
- }
- while(memory[ip] !== 'exit'){
- switch (memory[ip]){
- case 'input':
- WSH.echo('Type number');
- memory[memory[ip + 1]] = parseFloat(WScript.StdIn.ReadLine());
- ip += 2;
- break;
- case 'output':
- WSH.echo('Result: ' + memory[memory[ip + 1]]);
- ip += 2;
- break;
- case 'plus':
- memory[memory[ip + 1]] = memory[memory[ip + 3]] + memory[memory[ip + 2]];
- ip += 4;
- break;
- case 'multiplication':
- memory[memory[ip + 1]] = memory[memory[ip + 3]] * memory[memory[ip + 2]];
- ip += 4;
- break;
- case 'mod':
- memory[memory[ip + 1]] = memory[memory[ip + 2]] % memory[memory[ip + 3]];
- ip += 4;
- break;
- case 'mov':
- memory[memory[ip + 1]] = Number(memory[ip + 2]);
- ip += 3;
- break;
- case 'assign':
- memory[memory[ip + 1]] = memory[memory[ip + 2]];
- ip += 3;
- break;
- case 'dif':
- dif = memory[memory[ip + 1]] - memory[memory[ip + 2]];
- ip += 3;
- break;
- case 'jump':
- ip = memory.findAndReturnIndex(memory[ip + 1] + ':') + 1;
- break;
- case 'jumpLarge':
- if (dif > 0){
- ip = memory.findAndReturnIndex(memory[ip + 1] + ':') + 1;
- }
- else
- {
- ip += 2;
- }
- break;
- case 'jumpEqual':
- if (dif === 0){
- ip = memory.findAndReturnIndex(memory[ip + 1] + ':') + 1;
- }
- else
- {
- ip += 2;
- }
- break;
- case 'equal':
- if (memory[memory[ip + 1]] === memory[memory[ip + 2]]){
- ip = memory[ip + 3];
- }
- else{
- ip += 4;
- }
- break;
- case 'unequal':
- if (memory[memory[ip + 1]] !== memory[memory[ip + 2]]){
- ip = memory[ip + 3]
- }
- else{
- ip += 4;
- }
- break;
- case 'exit':
- return;
- default:
- if (memory[ip].charAt(memory[ip].length - 1) === ':')
- {
- ip += 1
- }
- break;
- }
- }
- }
- main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement