a(A) --> [1], b, c, {A=5}. vyraz("10+3*4"). vs(S, H) :- string_chars(S, C), v(H, C, []). v(H) --> pv(H) ; prv(H). pv(H) --> ['('],v(H),[')']. pv(A) --> startcisla(A). prv(R) --> pv(H1),['*'],prv(H2),{R is H1 * H2}. prv(R) --> pv(H1),['+'],prv(H2),{R is H1 + H2}. prv(H) --> pv(H). cislice(Index) --> [Ch], {nth0(Index, ['0','1','2','3','4', '5','6','7','8','9'], Ch)}. startcisla(V) --> cislo(0,V). cislo(H,V) --> cislice(H1), {V is H*10+H1}. cislo(H,V) --> cislice(H1), {H2 is H*10+H1}, cislo(H2,V).