gpt4 book ai didi

java - 具有整数文字的解析器

转载 作者:行者123 更新时间:2023-12-01 12:22:44 25 4
gpt4 key购买 nike

我正在寻找一种简单有效的方法来在java的词法解析器中实现一组数字。例如我的输入代码如下:

"6+9" ,      

输出必须有点像这样:

   Number : 6   
Sign : +
Number: 9

我遇到的问题是,除了按如下方式实现之外,我无法识别该数字:

static char INTVALUE = ('0') ;    

这意味着我必须手动输入 0 到 9 之间的每个数字,而且我不知道这样的方法是否允许在我的输入中包含诸如 85 之类的数字。

顺便说一句,这是一份家庭作业谢谢 。

最佳答案

对于最简单的语法,您确实可以使用正则表达式:

import java.util.regex.*;
// ...
String expression = "(10+9)*2";
Pattern pattern = Pattern.compile("\\s*(\\d+|\\D)\\s*");
Matcher matcher = pattern.matcher(expression);
while (matcher.find()) {
String token = matcher.group(1);
System.out.printf("%s: '%s'%n",
token.matches("\\d+") ? "Number" : "Symbol",
token);
}

在编译器构建类(class)中,您可能需要构建一个 NFA然后通过实现类似 this one 的算法将其转换为最小 DFA 。在现实生活中,您通常会使用类似 ANTLR 的工具。或JLex .

关于java - 具有整数文字的解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com