:- module(atom_dcg, [atom_phrase/2]). :- meta_predicate atom_phrase(2, ?). atom_phrase(G, A) :- ( var(A) -> phrase(G, C), atom_codes(A, C) ; atom_codes(A, C), phrase(G, C) ).