gpt4 book ai didi

java - 如何更改 javaCC adder.jj 以从命令提示符接收字符串而不是流?

转载 作者:行者123 更新时间:2023-11-30 02:22:50 26 4
gpt4 key购买 nike

我在 this 之后创建了 adder.jj 文件教程(直到第 13 页,就在计算器示例开始之前),创建一个加法器,它非常适合以语法正确的方式获取数字和加号的结果(例如“4+3 +7”返回 14,而“4++3”给出了错误),这些数字和+号来自文本文件(对此进行了一些解释)。我用来生成所需的类来执行前面解释的操作的代码。

options
{
STATIC = false ;
}
PARSER_BEGIN(Adder)
class Adder
{
public static void main (String[] args)
throws ParseException, TokenMgrError, NumberFormatException
{
Adder parser = new Adder (System.in) ;
int val = parser.Start() ;
System.out.println(val) ;
}
}
PARSER_END(Adder)

SKIP : { " " }
SKIP : { "\n" | "\r" | "\r\n" }
TOKEN : { < PLUS :"+"> }
TOKEN : { < NUMBER : (["0"-"9"])+ > }

int Start() throws NumberFormatException :
{
int i ;
int value ;
}
{
value = Primary()
(
<PLUS>
i = Primary()
{ value += i ; }
)*
{ return value ; }
}

int Primary() throws NumberFormatException :
{
Token t ;
}
{
t=<NUMBER>
{ return Integer.parseInt( t.image ) ; }
}

这些类是用

生成的
javacc adder.jj

然后我用

编译生成的类
javac *.java

最后

java Adder < ex1.txt

如果 ex1.txt 的内容具有我之前解释过的格式,则给出正确的输出。

如何更改此代码以接收字符串,以便我可以在项目中实际使用它而不是来自命令行的流?

最佳答案

尝试更换

Adder parser = new Adder (System.in) ;

Reader reader = new StringReader( someString ) ;
Adder parser = new Adder( reader ) ;

关于java - 如何更改 javaCC adder.jj 以从命令提示符接收字符串而不是流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46372461/

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