List 在Prolog中从字符串中拆分单词
我想从字符串中拆分单词,并将其放入Prolog中的列表中List 在Prolog中从字符串中拆分单词,list,split,prolog,dcg,List,Split,Prolog,Dcg,我想从字符串中拆分单词,并将其放入Prolog中的列表中 num --> [one] | [two] | [three] | [four] | [five]. ?- split("onethreetwofive", Ls). Ls = [one,three,two,five]. % expected answer 在这里,我想从num中拆分带有匹配列表的字符串,并将单词放入列表中。我正在使用SWI Prolog。有什么想法吗?谢谢 使用 :- set_prolo
num --> [one] | [two] | [three] | [four] | [five].
?- split("onethreetwofive", Ls).
Ls = [one,three,two,five]. % expected answer
在这里,我想从num
中拆分带有匹配列表的字符串,并将单词放入列表中。我正在使用SWI Prolog。有什么想法吗?谢谢 使用强>
:- set_prolog_flag(double_quotes, chars).
num --> "one" | "two" | "three" | "four" | "five".
nums --> "".
nums --> num, nums.
让我们运行OP建议的查询
?- phrase(nums(Ls), "onethreetwofive").
Ls = [one, three, two, five] ;
false.
使用强>
:- set_prolog_flag(double_quotes, chars).
num --> "one" | "two" | "three" | "four" | "five".
nums --> "".
nums --> num, nums.
让我们运行OP建议的查询
?- phrase(nums(Ls), "onethreetwofive").
Ls = [one, three, two, five] ;
false.
让我们试试这段代码。:-set_prolog_标志(双引号,代码)。
any(A,K)-->{member(S,K)},S,{atom_code(A,S)}。
num(S)->任何一个(S),[一个”,“两个”,“三个”,“四个”,“五个]。
nums([])-->.
nums([X|Xs])-->num(X),nums(Xs)。
split(Str,Ls):-短语(nums(Ls),Str)。
好的,现在让我们运行查询。
?-拆分(“onethreetofive”,Ls)。
Ls=[1,3,2,5]代码>让我们试试这段代码。
:-set_prolog_标志(双引号,代码)。
any(A,K)-->{member(S,K)},S,{atom_code(A,S)}。
num(S)->任何一个(S),[一个”,“两个”,“三个”,“四个”,“五个]。
nums([])-->.
nums([X|Xs])-->num(X),nums(Xs)。
split(Str,Ls):-短语(nums(Ls),Str)。
好的,现在让我们运行查询。
?-拆分(“onethreetofive”,Ls)。
Ls=[1,3,2,5]代码>你试过什么吗?您在SWI Prolog中查找过atom和字符串处理谓词吗?-->
运算符用于定义DCG。这就是你想要的吗?你试过什么吗?您在SWI Prolog中查找过atom和字符串处理谓词吗?-->
运算符用于定义DCG。这就是你的意图吗?