算术计算机
我需要一些关于序言的帮助,这对我来说是很新的。我必须设计一台小型算术计算机。要计算的表达式将表示为一个列表,例如:
?-evaluate([2,+,4,*,5,+,1,*,2,*,3],R).
我试图通过设计两个谓词来实现这一点,一个称为 parse 来转换我的列表,例如:
?-parse([1,+,2,*,3],PF).
PF=[+,1,[*,2,3]]
另一个谓词用于计算新表达式。
?-evpf([+,1,[*,2,3]],R).
R=7
我对第一部分有疑问,有人可以帮我解决代码吗?
I need some help in prolog, which is pretty new to me. I have to design a small arithmetic computer. The expression to be evaluated will be represented as a list for example:
?-evaluate([2,+,4,*,5,+,1,*,2,*,3],R).
I am trying to do this by designing two predicates one called parse to transform my list for example:
?-parse([1,+,2,*,3],PF).
PF=[+,1,[*,2,3]]
and another one to evaluate the new expression.
?-evpf([+,1,[*,2,3]],R).
R=7
I have problems with the first part, can anyone help my with the code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 DCG 进行解析(= 将列表转换为抽象语法树)很容易:
要实际计算表达式,您可以使用内置谓词 is/2。示例查询:
Parsing (= converting a list to an abstract syntax tree) is easy with DCGs:
To actually evaluate the expression, you can then use the built-in predicate is/2. Sample query: