【发布时间】:2014-11-16 00:32:56
【问题描述】:
语法如下:
<S>-><X><Y><Z>
<X>->a<X>|a
<Y>->b<Y>|b
<Z>->c<Z>|c
我需要用这个语法写一个解析器。
当测试 S([a,a,b,c,c,c],[])。 它应该返回 true。 在我的代码中,我定义了匹配规则来检查列表元素。
match(H,[H|T],T).
na(X0,X1):-match(a,X0,X2).
nb(X0,X1):-match(b,X0,X2).
nc(X0,X1):-match(c,X0,X2).
ns(X0,X1):-na(X0,X2),nb(X2,X3),nc(X3,X1).
这段代码有什么问题?它给出了真实的但是当你追踪时。它不起作用。
【问题讨论】:
-
阅读stackoverflow.com/tour 了解该网站的运作方式!
标签: parsing prolog context-free-grammar dcg