%%% esta gramatica classifica a lista de tokens
%%% em: w (word), c (colon), v (virgula) e n (numero).
%%%
%%% Usar junto com tokador:
%%%
%%% ?- tokador(L), tokenlist(C, L, []).
%%%
%%% A classificacao aparece em C.


tokenlist([]) --> [].
tokenlist([T | L]) --> token(T), tokenlist(L).

token(n) --> number, {!}.
token(c) --> colon, {!}.
token(v) --> comma, {!}.
%%% word tem que ser a última
token(w) --> word.

number --> [D], { number(D) }.
colon --> [':'].
comma --> [','].
%%% word --> [W], { W \= ':', W \= ',', \+ number(W) }.
word --> [_].
