Parse Variables Using DCG

廉价感情. 提交于 2019-12-22 09:30:25

问题


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]}

回答1:


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).



回答2:


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.



来源:https://stackoverflow.com/questions/6347091/parse-variables-using-dcg

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!