java - 计算器问题

标签 java parsing

我想设计一个特殊的计算器.. 我遇到了这样的问题: 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/

相关文章:

java - 如何比较两个数组之间的元素,然后打印相等的元素?

java - 如何使用反射/自省(introspection)来维护程序?

xml - 以下基于 Swift 的 XML 解析器的瓶颈是什么?

java - 智能 : Cannot import classes from other modules in my project?

java - 对具有重复值的 HashMap 进行排序

java - 在 Debian 上安装 Modellus X,需要 libglass.so

Javascript JSON解析对象,一个对象属性未定义,不抛出任何错误

c - Boost.Program_options 的良好 C 替代方案?

javascript - 在 Highchart 中解析数据

c - 关于流C解析器