
strToInt(Str, Int) :-
	string_chars(Str, S),
	reverse(S, Sr),
	atomsToInt(Sr, Int).

atomsToInt([], 0).
atomsToInt([H|S], Nr) :-
	atom_number(H, I),
	atomsToInt(S, Nr1),
	Nr is I + Nr1 * 10.

% validni uzavorkovani pomoci {} [] ()
validni(String) :-
	string_chars(String, Sez),
	validniP(Sez, []).

validniP(['a'|Z], Z).
validniP(['('|Z], Z1) :- validniN(Z, [')'|Z1]).
validniP(['['|Z], Z1) :- validniN(Z, [']'|Z1]).
validniP(['{'|Z], Z1) :- validniN(Z, ['}'|Z1]).
validniN(X, Z1) :- validniP(X, Z2), validniN(Z2, Z1).
validniN(X,X).

% to same pomoci gramatik
platny(String) :-
	string_chars(String, Sez),
	platnyP(Sez,[]).

platnyN --> platnyP, platnyN.
platnyN --> [].
platnyP --> ['a'].
platnyP --> ['('], platnyN, [')'].
platnyP --> ['{'], platnyN, ['}'].
platnyP --> ['['], platnyN, [']'].
