Question

I am having trouble parsing sequences that begin with capital letters into variables using Prolog's DCG notation. For instance, if I have the string

f a X y Z X

and a DCG that parses this string, is there any way to parse each capitalized letter into a unique Prolog variable. E.g., parse Y to a variable and each X to a variable? The intended application would be to build the functor

T = f(a,X,y,Z,X)

via a DCG rule ending with the statement

{T =.. [Head|Args]}
Was it helpful?

Solution

Maybe you are looking for term_to_atom/3:

?- term_to_atom(Term, 'f(a,X,y,Z,X)').
Term = f(a, _G304, y, _G306, _G304).

OTHER TIPS

If you are using capital letters as an atom, you have to surround them between single quotes. E.g. 'X' and 'Z'.

Otherwise, they will be considered as prolog variables.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top