added inp and err instructions
This commit is contained in:
		@@ -121,7 +121,9 @@ void interpreter::exec_instruction(const std::string& code, bool& done) {
 | 
				
			|||||||
    else if (code == "fun") fun();
 | 
					    else if (code == "fun") fun();
 | 
				
			||||||
    else if (code == "ret") ret();
 | 
					    else if (code == "ret") ret();
 | 
				
			||||||
    else if (code == "enl") enl();
 | 
					    else if (code == "enl") enl();
 | 
				
			||||||
    else if (code == "out") out(); // for debugging
 | 
					    else if (code == "inp") inp();
 | 
				
			||||||
 | 
					    else if (code == "out") out();
 | 
				
			||||||
 | 
					    else if (code == "err") err();
 | 
				
			||||||
    else throw syntax_error {code};
 | 
					    else throw syntax_error {code};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -387,7 +389,19 @@ void interpreter::ret() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// debugging --------------------------------------------------------------
 | 
					// debugging --------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void interpreter::inp() {
 | 
				
			||||||
 | 
					    std::string val;
 | 
				
			||||||
 | 
					    std::cin >> val;
 | 
				
			||||||
 | 
					    _stack.push_back(val);
 | 
				
			||||||
 | 
					    _pc++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void interpreter::out() {
 | 
					void interpreter::out() {
 | 
				
			||||||
    std::cout << _stack.back() << '\n';
 | 
					    std::cout << _stack.back() << '\n';
 | 
				
			||||||
    _pc++;
 | 
					    _pc++;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void interpreter::err() {
 | 
				
			||||||
 | 
					    std::cerr << _stack.back() << '\n';
 | 
				
			||||||
 | 
					    _pc++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,8 +72,10 @@ class interpreter {
 | 
				
			|||||||
        void fun();
 | 
					        void fun();
 | 
				
			||||||
        void ret();
 | 
					        void ret();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // debugging
 | 
					        // I/O
 | 
				
			||||||
 | 
					        void inp();
 | 
				
			||||||
        void out();
 | 
					        void out();
 | 
				
			||||||
 | 
					        void err();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // _interpreter_H_
 | 
					#endif // _interpreter_H_
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user