Parsing Expressions w/o recursion
by dimskraft
HTML
<textarea rows="4" cols="50" id="expression">
</textarea>
<br/>
=<div id="result">12</div>
JavaScript
function tokenize(s) {
var position = 0;
var ans = [];
var number = '';
while(position<s.length) {
var nextchar = s.substring(position, position+1).trim();
if( '0123456789'.includes(nextchar) ) {
number += nextchar;
}
else {
if(number.length>0) {
ans.push( parseInt(number) );
number = '';
}
if( nextchar.length > 0 ) {
ans.push(nextchar);
}
}
position++;
}
if(number.length>0) {
ans.push( parseInt(number) );
number = '';
}
return ans;
}
function compute(expression) {
var pos = 0;
var level = 0;
}
$('#expression').on('input propertychange paste', function() {
$('#result').text(compute(tokenize($(this).val())));
});