簡體   English   中英

用序言解析

[英]Parsing with 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).`

2選項

?- 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_string ,用於將字符串拆分成“單詞”,這可能是您進行這種相當簡單的解析所需要的,然后您可以使用它來決定如何調用calendar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM