【发布时间】:2014-09-26 14:57:50
【问题描述】:
我目前正在使用 JavaCC、Eclipse 和 JTB 使用解析器开发一种简单的语言。我这样做是出于学习目的。当我运行 .java 文件时,它给了我以下错误:
Encountered " "var" "var "" at line 2, column 5.
Was expecting: ":" ...
但是当我查看我的代码时,第 2 行没有这样的东西??!! 我知道这个错误不应该出现由于之前的错误,我已经调试了大约 2 个小时了......
编辑 这是包含“var”的令牌代码:
TOKEN :
{
< REQUIRE: "require" >
| < IF: "if" >
| < WHILE:"while" >
| < VAR:"var" >
| < STOP:"stop" >
| < EXEC:"exec" >
| < ELSE:"else" >
}
这是“var”的规则定义:
void VariableDeclaration():{}
{
"var" VariableName() "=" MathExpression() "."
}
void VariableAssign():{}
{
VariableName() "=" MathExpression() "."
}
希望这会有所帮助:)
【问题讨论】:
-
你能包含它试图读取的代码吗?至少是第一位?
-
@Pokechu22 第一行?确定
-
出现错误是因为解析器在期待一组不包含“var”的令牌时遇到了令牌“var”。如果您想要更好的答案,则必须同时发布输入文本和语法的相关部分。如果您打开解析器调试,您将确切地看到发生了什么。
-
当它解析
"var "时,看起来你最后有空格。这可能就是它给你错误的原因。您的语法可能是正确的,但由于它看到的是"var "而不仅仅是"var"它会给您一个错误。查看您的代码,看看您是否正确地忽略了应该忽略的空格。 -
@mcon 所有的空格都可以,这里没有错:(
标签: java eclipse token abstract-syntax-tree javacc