Here is a copy-and-paste from SourceCoder 2 (copyright Cemetech 2005)
I'm not sure how to add source code to the program.
:"?→Str2
:"??π??x√^?*/?+-‾→Str9
:"int(.34inString(Str9,Ans→Y1
:DelVar ADelVar DDelVar N{0→O
:Input Str0
:Str0+"π→Str0
:For(I,1,length(Str0
:Disp ∟O
:Pause Str2
:sub(Str0,I,1→Str1
:inString("0123456789.",Str1→T
:If Ans:Then
:If D:Then
:N+(Ans-1)10^‾D→N
:D+1→D
:Else
:Ans=11→D
:If not(Ans
:10N+T-1→N
:1→A
:End
:Else
:If A:Then
:DelVar ADelVar Daugment({N},∟O→O
:DelVar N
:End
:Str1:Y1→P
:If Ans:Then
:sub(Str2,1,1
:If Ans="x√
:Then
:"^"+sub(Str2,2,length(Str2)-1→Str2
:∟O(2→X
:∟O(1→∟O(2
:X-1→∟O(1
:Else
:While P≤Y1 and not(P=Y1 and (Str1="‾" or Ans="‾
:If Ans="‾
:Then
:‾∟O(1→∟O(1
:Else
:expr("∟O(2)"+Ans+"∟O(1"→∟O(2
:DeltaListcumSum(∟O→O
:End
:sub(Str2,2,length(Str2)-1→Str2
:sub(Str2,1,1
:End
:End
:Str1+Str2→Str2
:Else
:If Str1="(
:Str1+Str2→Str2
:inString("√(3√(",Str1
:If Ans:Then
:augment({Ans+1},∟O→O
:"(x√"+Str2→Str2
:End
:If Str1=")
:Then
:inString(Str2,"(→T
:For(J,1,T-1
:sub(Str2,J,1
:If Ans="‾
:Then
:‾∟O(1→∟O(1
:Else
:expr("∟O(2)"+Ans+"∟O(1"→∟O(2
:DeltaListcumSum(∟O→O
:End
:End
:sub(Str2,T+1,length(Str2)-T→Str2
:End
:End
:End
:End
:∟O(1