Example #1
0
void Parser::popOperator(Operator op) {
	string nodeName = "";

	if(op.value == "+") {
		nodeName = "PLUS_NODE";
	} else if(op.value == "-") {
		nodeName = "MINUS_NODE";
	} else if(op.value == "*") {
		nodeName = "TIMES_NODE";
	}


	TNode* operatorNode = new TNode(nodeName, op.value, line, currentProc);
	
	TNode* rightOperand = operandStack.top();	operandStack.pop();
	TNode* leftOperand = operandStack.top();	operandStack.pop();

	operatorNode->addChild(leftOperand);
	operatorNode->addChild(rightOperand);

	operatorStack.pop();
	operandStack.push(operatorNode);

	postfix += " " + op.value; 
}
Example #2
0
void Parser::popOperator(Operator op) {
	TNode operatorNode = TNode(TNODE_NAMES[PLUS_NODE], "+", loc, 0);

	TNode* rightOperand = operandStack.top(); operandStack.pop();
	TNode* leftOperand = operandStack.top(); operandStack.pop();

	operatorNode.addChild(leftOperand);
	operatorNode.addChild(rightOperand);

	operatorStack.pop();
	operandStack.push(&operatorNode);

	expressionPostfix += " +";
}
Example #3
0
ULONG VorticalLayerCtrl::insertSubItem(ULONG nItem)
{
	TNode* pNode = m_pRoot->getAt(nItem);
	if (pNode != NULL)
	{
		setVirtualSizeCached(FALSE);
		pNode->addChild(SPTNode(new TNode));
		if (pNode->isExpanded())
		{
			CacheInfo chinfo(pNode->getMyLayer() + 1, TRUE);
			WFX_CONDITION(nItem + 1 <= m_rgCacheInfo.size());
			m_rgCacheInfo.insert(m_rgCacheInfo.begin() + nItem + 1, chinfo);
		}
	}
	return m_rgCacheInfo.size();
}