2
目前我正在和Prolog中的DCG玩解析XML文件。我能得到下面的代碼片段,它能夠解析簡單的XML如:序言DCG圖請
<author> <name> <f> arthur </f>
<m> conan </m>
<l> doyle </l>
</name>
<bday> <d> 22 </d>
<m> 5 </m>
<y> 1859 </y>
</bday>
</author>
<author> <name> <f> william </f>
<l> shakespeare </l>
</name>
<bday> <d> 23 </d>
<m> 4 </m>
<y> 1564 </y>
</bday>
</author>
$
和DCG被定義爲:
xml([E]) --> element(E).
xml([E|L]) --> element(E), xml(L).
element(E) --> begintag(N), elements(L), endtag(N), {E =.. [N|L]}.
elements(L) --> xml(L).
elements([E]) --> [E].
begintag(N) --> ['<', N, '>'].
endtag(N) --> ['<', '/', N, '>'].
會有人請說明DCG是如何工作的這個案例?我很難理解DCG中的參數(例如,[x]([E])中的[E]; xml([E | L])中的[E | L]。) 謝謝!
謝謝!你有關於構建分析樹的任何提示嗎?即使打開了「跟蹤」,我也很難理解它,而且想出構建解析樹的想法更加困難(即,在識別之後返回解析樹)。 – pippoflow 2010-11-05 00:26:21