В общем, заставить определять некорректные выражения и заставить освобождать память и для них, при возникновении исключений, оказалось непросто. Невозврат out-параметра при исключении изрядно меня напряг, заставив многое усложнить.
(проще было бы все созданные по пути деревья в отдельный список заносить, и освобождать по списку, чтобы не париться с рекурсивными выходами).
Новая версия:
TEST.rar ( 10.24 килобайт )
Кол-во скачиваний: 426 добавлена фича - если записать в ряд несколько выражений, то считаются все:
Код
Input expression or "exit": sin(pi/3) cos(pi/3)
sin(pi/3) = 8.66025403784438647E-01
cos(pi/3) = 5.00000000000000000E-01
(определять конец текущего выражения тоже вопрос отдельный, короче 95% времени я не выражение разбирал, а определял некорректности, а сам разбор тривиален)