我想设计一个特殊的计算器......我遇到了这样一个问题:X = 1 +(12*4 + 2)我需要首先获得操作数的数量,这里我有两个操作数1和(12*4 + 2)我如何区分外部+和内部?
谢谢
这里真是一个了不起的社区..从最简单到最难的不同答案.. guyz我的问题不是计算器,也不是与数学相关的任何其他东西..我只是问外部和内部加上应用策略完全不同的东西.
我正在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
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如果我有这样的输入:a(X,Y)= a(b(c,Y),Z)..
我怎样才能提取元素的数量(和值)(即第一个表达式的X和Y)
当我阅读并试图解决这个问题时,我已经为我提出了不同的新技术..比如词法分析,解析我对Lexical Alanysis一无所知虽然我知道解析和令牌(以字符串方式)而且我认为它不会解决我的问题问题..我现在正在尝试实施Joey Adams所说的......我认为这对我的问题很有用..
这篇文章的文章...感谢你的帮助
你的问题非常笼统,完整的答案可能会在书中占用几个章节.
话虽这么说,我建议你从谷歌搜索开始学习一些术语并了解:
标记化和解析(从字符串中提取单个组件.)
中缀评估(采用一对操作数和干预操作员并存储答案)
后缀评估(采用一对操作数和一个跟随运算符 - 这还没有意义,但可能会在你读完之后.)
..并进一步阅读:
编译器设计
...当您遇到具体问题时,请继续访问此站点.不要忘记搜索与您的问题相似的问题的答案!