【发布时间】:2019-02-19 22:56:07
【问题描述】:
我对 javacc 有点陌生。有人可以解释一下为什么我一直收到这个错误。写语法的方式不对吗?
I keep getting this error despite writing the right grammar.
以下是我的代码:
options {
Static = false ;
}
PARSER_BEGIN(Adder)
class Adder {
static void main(String[] args) throws ParseException, TokeMgrError {
Adder parser = new Adder(System.in);
parser.Start;
}
}
PARSER_END(Adder)
SKIP :{
” ”
| ”\n”
| ”\r”
| ”\r\n”}
TOKEN :{<PLUS : ”+”>}
TOKEN :{<NUMBER : ([”0”-”9”])+>}
void Start() :
{}
{
<NUMBER>
(
<PLUS>
<NUMBER>
)*
<EOF>6
这是我得到的错误:
C:\Users\musta>java -cp C:\javacc-6.0\bin\lib\javacc.jar javacc adder.jj
Java Compiler Compiler Version 6.0_1 (Parser Generator)
(type "javacc" with no arguments for help)
Reading from file adder.jj . . .
org.javacc.parser.ParseException: Encountered " <IDENTIFIER> "\u00e2\u20ac "" at line 14, column 9.
Was expecting one of:
<STRING_LITERAL> ...
"<" ...
Detected 1 errors and 0 warnings.
【问题讨论】:
-
不要使用智能引号。
-
在黑暗中拍摄,但
” ”使用了花哨的引号。那些应该是" "。其余的也一样。 -
好的,非常感谢
-
我有点担心这里的错误信息。引号看起来像 U+201D。 (即右双引号)。那么为什么 JavaCC 会看到 U+00e2 和 U+20ac 呢?也许文件编码不是 JavaCC 所期望的。
标签: java compiler-construction javacc