为什么我不能使用javacc工具解析一个简单的表达式
我是使用工具的初学者,我制作了一个类为什么我不能使用javacc工具解析一个简单的表达式,java,compiler-construction,javacc,Java,Compiler Construction,Javacc,我是使用工具的初学者,我制作了一个类Expression.jj,其中我使用了以下语法 expr->expr+term|term term->term*fact|fact fact->(expr)|num 这是源代码 PARSER_BEGIN(Expression) public class Expression { public static void main(String s[]) { try { new Expressi
Expression.jj
,其中我使用了以下语法
expr->expr+term|term
term->term*fact|fact
fact->(expr)|num
这是源代码
PARSER_BEGIN(Expression)
public class Expression
{
public static void main(String s[])
{
try
{
new Expression(new java.io.StringReader(args[0])).StartSymbol();
System.out.println("Syntex checking successfull");
}
catch(Throwable e)
{
System.out.println("Syntex checking failed");
e.getMessage();
}
}
}
PARSER_END(Expression)
SKIP:{"" | "\t" | "\n" | "\r" }
TOKEN:{"(" | ")" | "+" | "*" |<NUM: (["0"-"9"])+>}
void StartSymbol():
{
(Expr())*
<EOF>
}
void Expr():
{
Term() ("+" Term())*
}
void Term():
{
Factor() ("*" Factor())*
}
void Factor():
{
<NUM> | "(" Expr() ")"
}
@编辑
当我使用此命令时,它正在运行:
C:\javaccprog>java -cp C:\javacc5.0\javacc-5.0\bin\lib\javacc.jar javacc Expression.jj
而不是:
C:\java -cp C:\javacc5.0\javacc-5.0\bin\lib\javacc.jar javacc C:\compilerprog\Expression.jj
错误:无法打开文件Expression.java进行写入。
表示无法写入“Expression.java”,请更改您的工作目录。我没有java文件,这怎么可能?即使更改后仍会出现相同的错误。另外,我有一个windows驱动器,其他驱动器是mac驱动器。因此它在那里没有权限。也许您不应该在C:\
中运行java
,因为在新的windows系统中,您不能使用普通用户权限将文件写入C:\
。请重新格式化此难以辨认的文件。
C:\java -cp C:\javacc5.0\javacc-5.0\bin\lib\javacc.jar javacc C:\compilerprog\Expression.jj