public void AppendOperator( TokenOperator op ) { switch(op.OpCode) { case '(': m_stack_of_ops.Push( op ); break; case ')': { var sop = m_stack_of_ops.Pop(); while( sop.OpCode != '(' ) { m_postfix_expression.Add( sop ); sop = m_stack_of_ops.Pop(); } } break; default: if( m_stack_of_ops.Count > 0 ) { var sop = m_stack_of_ops.Peek(); while( op.Priority < sop.Priority && op.Associac == TokenOperator.Associativity.RightAssociative || op.Priority <= sop.Priority ) { m_postfix_expression.Add( m_stack_of_ops.Pop() ); if( m_stack_of_ops.Count > 0 ) sop = m_stack_of_ops.Peek(); else break; } } m_stack_of_ops.Push( op ); break; } }
private void AppendOperator() { string text = _textProvider.GetText(_tokens.CurrentToken); if (_tokens.Position == 0 || TokenOperator.IsUnaryOperator(_tokens, _textProvider, TokenOperator.GetOperatorType(text), -1)) { AppendToken(leadingSpace: false, trailingSpace: false); } else if (IsOperatorWithoutSpaces(text)) { AppendToken(leadingSpace: false, trailingSpace: false); } else { if (_tb.IsAtNewLine && _tb.Length > 0) { AppendTextBeforeToken(preserveUserIndent: true); AppendToken(leadingSpace: false, trailingSpace: true); } else { AppendToken(leadingSpace: true, trailingSpace: true); } } }