exp(V) --> term(V1), exp1(V1,V). exp1(V1, exp('+',V1,V2)) --> ['+'], exp(V2). exp1(V1, exp('-',V1,V2)) --> ['-'], exp(V2). exp1(V,V) --> []. term(V) --> factor(V1), term1(V1,V). term1(V1, exp('*',V1,V2)) --> ['*'], term(V2). term1(V1, exp('/',V1,V2)) --> ['/'], term(V2). term1(V,V) --> []. factor(num(X)) --> [X], { number(X) }. factor(exp(V)) --> ['('], exp(V), [')'].