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('({([]))');
*/