5  REM HP CONTRIBUTED LIBRARY, 2/75
10  DIM P$[72],O$[72],S[72],O[72]
20  DIM A$[72]
30  PRINT "TYPE EXPRESSION USING SINGLE LETTERS AS OPERANDS. PERMITTED"
40  PRINT "OPERATORS ARE '^','*','/','+','-'. PARENTHESES MAY BE NESTED"
50  PRINT "TO ANY DEPTH. SPACES ARE NOT PERMITTED. PROGRAM WILL OUTPUT"
60  PRINT "POLISH STACK (REVERSE) AND LIST OF OPERATORS' PRIORITY.."
70  PRINT "F(X)=";
80  INPUT A$
90  O$[1,LEN(A$)+1]=" "
100  O$=O$[1,LEN(A$)+1]
110  P$=O$
120  FOR L=1 TO LEN(A$)
130  D$=A$[L,L]
140  IF D$="(" THEN 530
150  IF D$=")" THEN 550
160  IF D$="+" THEN 570
170  IF D$="-" THEN 570
180  IF D$="*" THEN 590
190  IF D$="/" THEN 590
200  IF D$="^" THEN 650
210  S[L]=0
220  NEXT L
230  I=K=1
240  J=2
250  S[LEN(A$)+1]=0
260  O[1]=-1
270  IF S[I]=0 THEN 610
280  IF S[I]=2 THEN 340
290  O$[J,J]=A$[I,I]
300  O[J]=S[I]
310  I=I+1
320  J=J+1
330  GOTO 270
340  I=I+1
350  J=J-1
360  REM CHECK HIERARCHY RANKINGS
370  IF O[J-1] >= S[I] THEN 400
380  IF I=LEN(A$)+1 THEN 440
390  GOTO 270
400  P$[K,K]=O$[J-1,J-1]
410  J=J-1
420  K=K+1
430  GOTO 360
440  PRINT A$
450  PRINT "INPUT STRING PRIORITY IN ORDER:"
460  FOR J=1 TO L-1
470  PRINT S[J];
480  NEXT J
490  PRINT 
500  PRINT "POLISH STACK"
510  PRINT P$
520  GOTO 80
530  S[L]=1
540  GOTO 220
550  S[L]=2
560  GOTO 220
570  S[L]=3
580  GOTO 220
590  S[L]=4
600  GOTO 220
610  P$[K,K]=A$[I,I]
620  I=I+1
630  K=K+1
640  GOTO 360
650  S[L]=5
660  GOTO 220
670  END 
