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