*       SNOBOL PROGRAM-2B:
*                                        Fall 2002
*       Parser for simple arithmetic expressions
        &anchor = 1
        &fullscan = 1
        &trim = 1
        op = any("+*-/")
        var = any("ABCDEFG")                              
        factor = var | "(" *exp ")"
        exp = factor | factor op *exp
LOOP    inp = input                     :f(END)
        inp exp rpos(0)                 :s(YES)
        output = inp "::: NOT AN EXPRESSION."   :(LOOP)
YES     output = inp "::: IS AN EXPRESSION."    :(LOOP)
END
D-((A+B-C*D/E)/F)
(A)
(((((A+B*C*D-E)))))
((A-B-C*(D+E))))
(A*B+C())
(((A+B)*(C-D+E)))