在Prolog中实现算术解析器

时间:2012-12-12 16:29:35

标签: prolog context-free-grammar dcg arithmetic-expressions

我有以下Prolog代码:

expression-->first,operator,second.
first-->[X].
operator-->['+'];['-'].
second-->[X].

编译完成后,机器响应"是"在以下类型的查询的命令行中:

| ?- expression([5,'+',3],[]).
| ?- expression(['a','-','b'],[]).
| ?- expression([2.8,'+',3.2],[]).

如何仅限于数字?因此,只有涉及数字的表达式应该是真实的,如下所示:| ?- expression([92,'+',23.48],[]).

1 个答案:

答案 0 :(得分:2)

您可以查看Xfirst中的second是否为数字:

first-->[X], {number(X)}.

second-->[X], {number(X)}.