【问题标题】:Can I Seperate Doubles Using a Parser? Java我可以使用解析器分离双打吗?爪哇
【发布时间】:2018-09-24 00:59:17
【问题描述】:

我正在尝试使用 Java 创建一个计算器。我知道我需要创建一个解析器来将用户的数据从字符串转换为双精度和字符。

我想知道,通过创建解析器,用户输入的数据(例如 7 / 5 )是否已经被分离,或者我是否需要以某种方式分离数据。

我还想知道运算符将如何影响解析器,以及是否有办法单独检索它。我曾尝试使用 input.next();检索操作数,但我认为因为我正在使用解析器,它可能无法正常工作。

这是我的代码:

String rawUserInt;
String method;
double answer;
Scanner input = new Scanner(System.in);

        System.out.println("Please input the equation you would like to solve");

        double userInt1 = Double.parseDouble(rawUserInt);
        method = input.next();
        double userInt2 = Double.parseDouble(rawUserInt);

【问题讨论】:

标签: java parsing calculator


【解决方案1】:

通常。形式语言(如表达式)的处理分为词法分析和解析。词法分析器会将输入拆分为标记,并且还会忽略不相关的字符,例如空格。它还确定令牌的类型。在您的示例中,这将导致double(7), operator(/), double(5)

下一步由解析器完成,它根据形式语言的语法将标记组装成抽象语法树 (AST)。在示例中,这将给出

      "/"
     /   \
    7     5

然后很容易使用树结构评估表达式。

在像您这样的简单情况下,您可能不需要所有层都作为显式组件。例如,可以在词法分析之后直接评估表达式,而无需先构建 AST。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多