parens
matches closing parenthesis
by devdev
HTML
<button onclick="testParensExpression(prompt());">
prompt()
</button>
<button onclick="testParensExpression('([{()}})]');">
([{()}})]
</button>
<button onclick="testParensExpression('([{(})]');">
([{(})]
</button>
<button onclick="testParensExpression('({([]))');">
({([]))
</button>
<div id="logger">
</div>
JavaScript
write = function(text){ document.all.logger.innerHTML+=(text+'<br>') }
function testChar(openingParens, closingParens){
return c==closingParens && stack[stack.length-1]==openingParens
}
testParensExpression = function(test){
document.all.logger.innerHTML='';
stack = []
i=0
for(i=0; i<test.length; i++){
c=test[i]
write('c: '+c)
if(c=='('||c=='['||c=='{') stack.push(c)
else
if(testChar('(', ')')||testChar('[', ']')||testChar('{', '}'))
stack.pop()
else break;
write('stack: '+stack)
}
write('i: '+i);
alert('test: '+test+' answer: '+test.slice(0, i));
if(stack.length==0) write('all closed')
else write('not all closed')
}
/*
testParensExpression(prompt());
testParensExpression('([{()}})]');
testParensExpression('([{(})]');
testParensExpression('({([]))');
*/