计算器问题

1 java parsing

我想设计一个特殊的计算器......我遇到了这样一个问题: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所说的......我认为这对我的问题很有用..

这篇文章的文章...感谢你的帮助

Bob*_*man 5

你的问题非常笼统,完整的答案可能会在书中占用几个章节.

话虽这么说,我建议你从谷歌搜索开始学习一些术语并了解:

标记化解析(从字符串中提取单个组件.)

中缀评估(采用一对操作数和干预操作员并存储答案)

后缀评估(采用一对操作数和一个跟随运算符 - 这还没有意义,但可能会在你读完之后.)

..并进一步阅读:

编译器设计

...当您遇到具体问题时,请继续访问此站点.不要忘记搜索与您的问题相似的问题的答案!