add completed interpreter.js
This commit is contained in:
parent
f60da0d400
commit
cfb13f2812
1 changed files with 50 additions and 0 deletions
50
interpreter.js
Normal file
50
interpreter.js
Normal file
|
@ -0,0 +1,50 @@
|
|||
class Calculator {
|
||||
result;
|
||||
expression;
|
||||
|
||||
/*
|
||||
Perform a calculation.
|
||||
|
||||
@param {string} expr the expression to solve
|
||||
@return {Object} the result
|
||||
*/
|
||||
calculate(expr) {
|
||||
try {
|
||||
this.result = eval(expr);
|
||||
} catch(err) {
|
||||
alert(err);
|
||||
};
|
||||
};
|
||||
|
||||
interactive() {
|
||||
while (true) {
|
||||
this.input = ``;
|
||||
|
||||
this.input = (this.result != null) ? prompt(this.result) : prompt();
|
||||
|
||||
// Determine whether the user typed a value.
|
||||
if ((this.input) ? this.input.trim() : false) {
|
||||
this.expression = this.input.trim();
|
||||
delete this.input;
|
||||
|
||||
// Solve the expression.
|
||||
this.calculate(this.expression);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
constructor() {
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
function main() {
|
||||
let INSTANCE = new Calculator();
|
||||
INSTANCE.interactive();
|
||||
};
|
||||
|
||||
main();
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue