Да не, нужен алгоритм разложения на паскале... Хотя и на яве у меня он уже есть, но я яву знаю на нуле

public class f
{
Stack m_forStack;
Stack m_intStack;
Stack m_tryStack;
Stack m_caseStack;
String m_aString;
Stack m_newStack;
Stack m_ifStack;
e m_doe;
byte m_byteaB[] = {
0, 8, 8, 5, 5, 3, 2, 10, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1
};
public f(String s)
{
m_tryStack = new Stack();
m_forStack = new Stack();
m_newStack = new Stack();
m_caseStack = new Stack();
m_intStack = new Stack();
m_ifStack = new Stack();
m_doe = (new e())._dee(e.m_ce);
m_aString = new String(s);
_avV();
_dovV();
_ifvV();
}
public void _ifvV()
{
m_newStack.setSize(0);
m_ifStack.setSize(0);
m_tryStack.setSize(0);
m_caseStack.setSize(0);
if(m_aString == "empty")
return;
for(int i = 0; i < m_forStack.size(); i++)
if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 0)
{
m_newStack.addElement(m_forStack.elementAt(i));
m_ifStack.addElement(m_intStack.elementAt(i));
} else
if(m_tryStack.size() < 1)
{
m_tryStack.addElement(m_forStack.elementAt(i));
m_caseStack.addElement(m_intStack.elementAt(i));
} else
if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 7)
{
m_tryStack.addElement(m_forStack.elementAt(i));
m_caseStack.addElement(m_intStack.elementAt(i));
} else
if(Integer.parseInt(m_forStack.elementAt(i).toString()) == 8)
{
for(; _forvI() != 7; m_ifStack.addElement(m_caseStack.pop()))
m_newStack.addElement(m_tryStack.pop());
m_tryStack.pop();
m_caseStack.pop();
} else
if(_forvI() >= 0)
{
if(m_byteaB[_forvI()] <= m_byteaB[Integer.parseInt(m_forStack.elementAt(i).toString())])
{
while(m_byteaB[_forvI()] <= m_byteaB[Integer.parseInt(m_forStack.elementAt(i).toString())])
{
m_newStack.addElement(m_tryStack.pop());
m_ifStack.addElement(m_caseStack.pop());
if(m_tryStack.size() < 1)
break;
}
m_tryStack.addElement(m_forStack.elementAt(i));
m_caseStack.addElement(m_intStack.elementAt(i));
} else
{
m_tryStack.addElement(m_forStack.elementAt(i));
m_caseStack.addElement(m_intStack.elementAt(i));
}
} else
{
m_tryStack.addElement(m_forStack.elementAt(i));
m_caseStack.addElement(m_intStack.elementAt(i));
}
for(; m_tryStack.size() > 0; m_ifStack.addElement(m_caseStack.pop()))
m_newStack.addElement(m_tryStack.pop());
}
public void _dovV()
{
String s = new String("");
m_forStack.setSize(0);
m_intStack.setSize(0);
if(m_aString == "empty")
return;
int j = m_aString.length();
if(j < 1)
return;
boolean flag = false;
boolean flag1 = false;
for(int i = 0; i < j; i++)
{
if(flag1)
{
if(_forCZ(m_aString.charAt(i)))
{
s = s + m_aString.charAt(i);
continue;
}
flag1 = false;
if(s.equals("sin"))
{
m_forStack.addElement(new Integer(9));
m_intStack.addElement(new e());
}
if(s.equals("cos"))
{
m_forStack.addElement(new Integer(10));
m_intStack.addElement(new e());
}
if(s.equals("lg"))
{
m_forStack.addElement(new Integer(11));
m_intStack.addElement(new e());
}
if(s.equals("log2"))
{
m_forStack.addElement(new Integer(12));
m_intStack.addElement(new e());
}
if(s.equals("tg"))
{
m_forStack.addElement(new Integer(13));
m_intStack.addElement(new e());
}
if(s.equals("arctg"))
{
m_forStack.addElement(new Integer(14));
m_intStack.addElement(new e());
}
if(s.equals("arccos"))
{
m_forStack.addElement(new Integer(15));
m_intStack.addElement(new e());
}
if(s.equals("arcsin"))
{
m_forStack.addElement(new Integer(16));
m_intStack.addElement(new e());
}
if(s.equals("sqrt"))
{
m_forStack.addElement(new Integer(19));
m_intStack.addElement(new e());
}
if(s.equals("pi"))
{
m_forStack.addElement(new Integer(20));
m_intStack.addElement(new e());
}
if(s.equals("x"))
{
m_forStack.addElement(new Integer(21));
m_intStack.addElement(new e());
}
if(s.equals("e"))
{
m_forStack.addElement(new Integer(22));
m_intStack.addElement(new e());
}
if(s.equals("abs"))
{
m_forStack.addElement(new Integer(23));
m_intStack.addElement(new e());
}
if(s.equals("ln"))
{
m_forStack.addElement(new Integer(24));
m_intStack.addElement(new e());
}
if(s.equals("log"))
{
m_forStack.addElement(new Integer(25));
m_intStack.addElement(new e());
}
if(s.equals("ctg"))
{
m_forStack.addElement(new Integer(26));
m_intStack.addElement(new e());
}
}
if(flag)
{
if(_ifCZ(m_aString.charAt(i)) || m_aString.charAt(i) == '.')
{
s = s + m_aString.charAt(i);
continue;
}
flag = false;
int k = s.indexOf('.');
if(k > -1)
{
m_forStack.addElement(new Integer(0));
m_intStack.addElement(new e(Integer.parseInt(s.substring(0, k)), -(m_aString.length() - k - 1)));
} else
{
m_forStack.addElement(new Integer(0));
m_intStack.addElement(new e(Integer.parseInt(s)));
}
}
if(m_aString.charAt(i) != ' ' && m_aString.charAt(i) != ',')
{
if(_doCZ(m_aString.charAt(i)))
{
m_forStack.addElement(new Integer(6));
m_intStack.addElement(new e());
}
if(_aCZ(m_aString.charAt(i)))
{
if(m_aString.charAt(i) == '+')
{
m_forStack.addElement(new Integer(1));
m_intStack.addElement(new e());
}
if(m_aString.charAt(i) == '-')
{
m_forStack.addElement(new Integer(2));
m_intStack.addElement(new e());
}
if(m_aString.charAt(i) == '*')
{
m_forStack.addElement(new Integer(3));
m_intStack.addElement(new e());
}
if(m_aString.charAt(i) == '/')
{
m_forStack.addElement(new Integer(4));
m_intStack.addElement(new e());
}
if(m_aString.charAt(i) == '^')
{
m_forStack.addElement(new Integer(5));
m_intStack.addElement(new e());
}
} else
if(m_aString.charAt(i) == '(')
{
m_forStack.addElement(new Integer(7));
m_intStack.addElement(new e());
} else
{
if(m_aString.charAt(i) == ')')
{
m_forStack.addElement(new Integer(8));
m_intStack.addElement(new e());
}
if(_ifCZ(m_aString.charAt(i)))
{
flag = true;
s = "" + m_aString.charAt(i);
} else
if(_forCZ(m_aString.charAt(i)))
{
flag1 = true;
s = "" + m_aString.charAt(i);
} else
{
}
}
}
}
}
private int _forvI()
{
if(m_tryStack.size() < 1)
return -1;
else
return Integer.parseInt(m_tryStack.peek().toString());
}
public void _avV()
{
String s = new String("");
int k = m_aString.length();
if(k < 1)
{
m_aString = "empty";
return;
}
for(int i = 0; i < k; i++)
{
if(m_aString.charAt(i) != ' ')
s = s + m_aString.charAt(i);
}
m_aString = ' ' + m_aString + ' ';
for(int j = 0; j < k; j++)
{
if(m_aString.charAt(j) == '-' && m_aString.charAt(j - 1) != ')' && !_ifCZ(m_aString.charAt(j - 1)))
m_aString = m_aString.substring(0, j) + '_' + m_aString.substring(j + 1);
}
}
public boolean _ifCZ(char c)
{
return c >= '0' && c <= '9';
}
public e _aee(e e1)
{
e e2 = new e(0L);
e e3 = new e();
e e6 = new e();
e e8 = new e();
m_tryStack.setSize(0);
m_caseStack.setSize(0);
if(m_aString == "empty")
return new e(0L);
for(int k5 = 0; k5 < m_newStack.size(); k5++)
{
int l5 = ((Integer)m_newStack.elementAt(k5)).intValue();
if(l5 == 0)
{
m_tryStack.addElement(m_newStack.elementAt(k5));
m_caseStack.addElement(m_ifStack.elementAt(k5));
} else
if(l5 == 1)
{
e e9 = ((e)m_caseStack.pop())._elseee((e)m_caseStack.pop());
int i = 0;
m_tryStack.addElement(new Integer(i));
m_caseStack.addElement(e9);
} else
if(l5 == 2)
{
e e10 = ((e)m_caseStack.pop())._voidee((e)m_caseStack.pop())._ave();
int j = 0;
m_tryStack.addElement(new Integer(j));
m_caseStack.addElement(e10);
} else
if(l5 == 3)
{
e e11 = ((e)m_caseStack.pop())._bee((e)m_caseStack.pop());
int k = 0;
m_tryStack.addElement(new Integer(k));
m_caseStack.addElement(e11);
} else
if(l5 == 4)
{
e e4 = (e)m_caseStack.pop();
if(e4._ceZ(e.m_casee))
{
e2 = new e(0x7fffffffffffffffL, 0x7fffffffffffffffL);
return e2;
}
e e12 = ((e)m_caseStack.pop())._gotoee(e4);
int l = 0;
m_tryStack.addElement(new Integer(l));
m_caseStack.addElement(e12);
} else
if(l5 == 5)
{
e e5 = (e)m_caseStack.pop();
e e7 = (e)m_caseStack.pop();
if(e7._nulleZ(e.m_casee))
{
if(e5.m_elseJ < 0L)
{
e2 = new e(0x7fffffffffffffffL, 0x7fffffffffffffffL);
return e2;
}
}
e e13 = e._ifeDFe(e7, e5);
int i1 = 0;
m_tryStack.addElement(new Integer(i1));
m_caseStack.addElement(e13);
} else
if(l5 == 6)
{
e e14 = ((e)m_caseStack.pop())._ave();
int j1 = 0;
m_tryStack.addElement(new Integer(j1));
m_caseStack.addElement(e14);
} else
if(l5 == 9)
{
e e15 = e._ifee((e)m_caseStack.pop());
int k1 = 0;
m_tryStack.addElement(new Integer(k1));
m_caseStack.addElement(e15);
} else
if(l5 == 10)
{
e e16 = e._fee((e)m_caseStack.pop());
int l1 = 0;
m_tryStack.addElement(new Integer(l1));
m_caseStack.addElement(e16);
} else
if(l5 == 11)
{
e e17 = e._longee((e)m_caseStack.pop());
int i2 = 0;
m_tryStack.addElement(new Integer(i2));
m_caseStack.addElement(e17);
} else
if(l5 == 12)
{
e e18 = e._dee((e)m_caseStack.pop());
int j2 = 0;
m_tryStack.addElement(new Integer(j2));
m_caseStack.addElement(e18);
} else
if(l5 == 13)
{
e e19 = e._newee((e)m_caseStack.pop());
int k2 = 0;
m_tryStack.addElement(new Integer(k2));
m_caseStack.addElement(e19);
} else
if(l5 == 14)
{
e e20 = e._doee((e)m_caseStack.pop());
int l2 = 0;
m_tryStack.addElement(new Integer(l2));
m_caseStack.addElement(e20);
} else
if(l5 == 15)
{
e e21 = e._eee((e)m_caseStack.pop());
int i3 = 0;
m_tryStack.addElement(new Integer(i3));
m_caseStack.addElement(e21);
} else
if(l5 == 16)
{
e e22 = e._iee((e)m_caseStack.pop());
int j3 = 0;
m_tryStack.addElement(new Integer(j3));
m_caseStack.addElement(e22);
} else
if(l5 != 17 && l5 != 18)
if(l5 == 19)
{
e e23 = e._charee((e)m_caseStack.pop());
int k3 = 0;
m_tryStack.addElement(new Integer(k3));
m_caseStack.addElement(e23);
} else
if(l5 == 20)
{
e e24 = e.m_be;
int l3 = 0;
m_tryStack.addElement(new Integer(l3));
m_caseStack.addElement(e24);
} else
if(l5 == 21)
{
e e25 = e1;
int i4 = 0;
m_tryStack.addElement(new Integer(i4));
m_caseStack.addElement(e25);
} else
if(l5 == 22)
{
e e26 = e.m_ce;
int j4 = 0;
m_tryStack.addElement(new Integer(j4));
m_caseStack.addElement(e26);
} else
if(l5 == 23)
{
e e27 = e._foree((e)m_caseStack.pop());
int k4 = 0;
m_tryStack.addElement(new Integer(k4));
m_caseStack.addElement(e27);
} else
if(l5 == 24)
{
e e28 = e._dee((e)m_caseStack.pop())._gotoee(m_doe);
int l4 = 0;
m_tryStack.addElement(new Integer(l4));
m_caseStack.addElement(e28);
} else
if(l5 == 25)
{
e e29 = e._dee((e)m_caseStack.pop())._gotoee(e._dee((e)m_caseStack.pop()));
int i5 = 0;
m_tryStack.addElement(new Integer(i5));
m_caseStack.addElement(e29);
} else
if(l5 == 26)
{
e e30 = e.m_ife._gotoee(e._newee((e)m_caseStack.pop()));
int j5 = 0;
m_tryStack.addElement(new Integer(j5));
m_caseStack.addElement(e30);
} else
{
}
}
e2 = (e)m_caseStack.pop();
return e2;
}
public boolean _aCZ(char c)
{
return c == '+' || c == '-' || c == '*' || c == '/' || c == '^';
}
public boolean _forCZ(char c)
{
return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
}
public boolean _doCZ(char c)
{
return c == '_';
}
}