我想设计一个特殊的计算器.. 我遇到了这样的问题: X=1+(12*4+2) 我需要先得到操作数的数量 就像这里我有两个操作数 1 和 (12*4+2) 我如何区分外部 + 和内部 +?
谢谢
这里的社区真是太棒了.. 从最简单到最难的不同答案.. guyz 我的问题不是计算器,也不是与数学相关的任何其他东西.. 我只是问了 outner 和 inner plus 以将策略应用于完全不同的事情。
我正在 java 中实现统一算法(就像给它两个表达式时 Prolog 解释器所做的一样)
这是算法:
function unify(E1, E2);
begin
case
both E1 and E2 are constants or the empty list:
if E1 = E2 then return {}
else return FAIL;
E1 is a variable:
if E1 occurs in E2 then return FAIL
else return {E2/E1}
E2 is a variable
if E2 occurs in E1 then FAIL
else return {E1/E2}
either E1 or E2 are empty then return FAIL
otherwise:
begin
HE1 := first element of E1;
HE2 := first element of E2;
SUBS1 := unify(HE1, HE2);
if SUBS1 := FAIL then return FAIL;
TE1 := apply(SUBS1, rest of E1);
TE2 := apply(SUBS1, rest of E2);
SUBS2 := unify(TE1, TE2);
if SUBS2 = FAIL then return FAIL;
else return composition(SUBS1, SUBS2)
end
end
现在我的问题是我是否有这样的输入: a(X,Y)=a(b(c,Y),Z)..
我如何提取元素的数量(和值)(即第一个表达式的 X 和 Y)
当我阅读并尝试解决这个问题时,我已经为我找到了不同的新技术...... 像词法分析,解析我不知道词法分析虽然我知道解析和标记(以字符串方式)而且我认为它不会解决我的问题.. 我现在正在尝试实现 Joey Adams 所说的..我认为这对我的问题很有用..
很抱歉这篇文章 guyz ...感谢您的帮助
最佳答案
你的问题很笼统,完整的答案可能会占用一本书的好几章。
话虽这么说,我建议您先通过谷歌搜索一些术语并了解:
标记化 和解析(从字符串中提取各个组件。)
中缀求值(取一对操作数和一个中间运算符并存储答案)
后缀求值(采用一对操作数和一个后续运算符——这还没有意义,但在你稍微阅读之后可能会明白。)
.. 进一步阅读:
编译器设计
...当您遇到具体问题时,请继续访问此站点。不要忘记搜索与您的问题类似且已被问到的问题的答案!
关于java - 计算器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540864/