Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 在Prolog中从字符串中拆分单词_List_Split_Prolog_Dcg - Fatal编程技术网

List 在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

我想从字符串中拆分单词,并将其放入Prolog中的列表中

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。这就是你的意图吗?