【问题标题】:Implementing an arithmetic parser in Prolog在 Prolog 中实现算术解析器
【发布时间】:2012-11-30 10:03:43
【问题描述】:

我有以下 Prolog 代码:

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

编译完成后,机器会在命令行中对以下类型的查询响应“yes”:

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

如何将其限制为仅限数字?因此,只有涉及数字的表达式才应该是真实的,例如:| ?- expression([92,'+',23.48],[]).

【问题讨论】:

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


    【解决方案1】:

    您可以检查firstsecond中的X是否为数字:

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

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2019-07-09
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多