public Node_Expr(string[] Src_Expr)
static int PrintLevel = -1;
static int[] PrevTabs_State = new int[1000];
for(int i = 0; i < PrintLevel; i++)
switch(PrevTabs_State[i])
case 1: Console.Write(" ├───"); PrevTabs_State[i] = 2; break;
case 2: Console.Write(" │ "); break;
case 3: Console.Write(" └───"); PrevTabs_State[i] = 4; break;
case 4: Console.Write(" "); break;
for(int i = 0; i<Len; i++)
PrevTabs_State[PrintLevel] = 1;
PrevTabs_State[PrintLevel] = 3;
int GetPrio(string Operand)
int ExprLen = Expr.Length;
string CurrOperand = Expr[i];
if(GetPrio(CurrOperand) <= Curr_Prio)
Curr_Prio = GetPrio(CurrOperand);
string[] For_Node_L = new String[SplitPos];
string[] For_Node_R = new String[ExprLen - SplitPos - 1];
for(i = 0; i < SplitPos; i++)
for(i = 0; i < For_Node_R.Length; i++)
For_Node_R[i] = Expr[i + SplitPos + 1];
Node_Expr Node_L = new Node_Expr(For_Node_L);
Node_Expr Node_R = new Node_Expr(For_Node_R);
string[] Expr_In_Current_Node = new String[1];
Expr_In_Current_Node[0] = Expr[SplitPos];
Expr = Expr_In_Current_Node;
if(Next_L.Expr.Length > 1)
if(Next_R.Expr.Length > 1)
string Expr = "A + B * C * D - E * F";
string[] Src_Expr = Expr.Split(' ');
Node_Expr n1 = new Node_Expr(Src_Expr);