[英]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.