private string ParsingCurrentCharacterElement(CharacterElement item,
Stack<CharacterElement> stack, ref bool isPreviousCharIsLetter)
{
var resultingReversePolishSignature = String.Empty;
var termnalSign = String.Empty;
if (item.TypeOfSign == TypeOfSign.Letter)
{
if (!isPreviousCharIsLetter)
{
termnalSign = "$";
isPreviousCharIsLetter = true;
}
resultingReversePolishSignature += termnalSign + item.CharValue;
}
else
{
if (isPreviousCharIsLetter)
{
resultingReversePolishSignature += "$";
}
isPreviousCharIsLetter = false;
if (stack.Count == 0)
{
stack.Push(item);
}
else if (item.CharValue == ")")
{
while (true)
{
if (stack.Peek().CharValue == "(")
{
stack.Pop();
break;
}
if (PeekOfStackIsBracket(stack))
{
resultingReversePolishSignature += stack.Peek().CharValue;
}
stack.Pop();
}
}
else if (item.TypeOfSign == TypeOfSign.OpeningBracket || (item.TypeOfSign > stack.Peek().TypeOfSign))
{
stack.Push(item);
}
else if (item.TypeOfSign <= stack.Peek().TypeOfSign)
{
while (item.TypeOfSign <= stack.Peek().TypeOfSign)
{
resultingReversePolishSignature += stack.Pop().CharValue;
}
stack.Push(item);
}
}
return resultingReversePolishSignature;
}