Parsing 用prolog解析
我正在尝试用prolog进行解析: 我需要运行一个在命令中接收文本的代码,并根据输入对其进行解析 命令cal返回日历(月、年)其中月份∈ [1-12]和年份∈ [1-9999]. 如果没有指定月份,则返回年份;如果没有指定月份,则返回当前月份和年份。 例如 选择1Parsing 用prolog解析,parsing,prolog,swi-prolog,Parsing,Prolog,Swi Prolog,我正在尝试用prolog进行解析: 我需要运行一个在命令中接收文本的代码,并根据输入对其进行解析 命令cal返回日历(月、年)其中月份∈ [1-12]和年份∈ [1-9999]. 如果没有指定月份,则返回年份;如果没有指定月份,则返回当前月份和年份。 例如 选择1 ?- read_sentence(X). |: cal 1 2000 X = calendar(1,2000). 选择2 ?- read_sentence(X). |: cal 2000 X = calendar(2000).`
?- read_sentence(X).
|: cal 1 2000
X = calendar(1,2000).
选择2
?- read_sentence(X).
|: cal 2000
X = calendar(2000).`
选择3
?- read_sentence(X).
|: cal
X = calendar(1,2016).
到目前为止,我能够阅读并打印这个句子,但我不知道如何解析,甚至不知道从哪里开始
read_sentence(X) :- get0(C),
read_sentence(X, L,C),
name(X, L).
read_sentence(_, [], X) :-
member(X, `.\n\t`), !.
read_sentence(X, [C|L], C) :-
get0(C1),
read_sentence(X, L, C1).
其中包括:
?- read_sentence(X).
|: Hello there
X = 'Hello there'.
SWI Prolog有一个谓词,
split\u string
,用于将字符串拆分为“单词”,这可能是这个相当简单的解析所需要的,然后您可以使用它来决定如何调用calendar您能解释一下解析的含义吗?要解析的东西似乎是你从read_-sense
中得到的东西;解析的结果应该是什么?我的意思是如果我输入read_句子(X)。这将打开一个需要输入的命令行。输入:cal 1 200
代码必须识别其具有“cal”、“1-12之间的数字”和“1-9999之间的数字”输出:calendar(1200)
这意味着您需要一种方法将输入字符串分解为单个单词列表,对吗?