Parsing 用prolog解析

Parsing 用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).`

我正在尝试用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).`
选择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)
这意味着您需要一种方法将输入字符串分解为单个单词列表,对吗?