Mei*_*eir 3 java token definitions
我写了这个:
(fitness>g.fitness) ? return 1 : return -1;
Run Code Online (Sandbox Code Playgroud)
并收到以下错误:
令牌上的语法错误,而不是标签.
任何人都可以解释在这种情况下令牌和标签是什么?
编辑:感谢您修复我的代码,但是您能解释一下令牌和标签是什么,以备将来参考吗?
标记是具有某种含义的单个字符和字符串.
语法语法的标识符(§3.8),关键字(§3.9),文字(§3.10),分隔符(§3.11)和运算符(§3.12).
给定行中的标记是:
"(", "fitness", ">", "g.fitness", ")", "?", "return", "1", ":", "return", "-1", ";"
Run Code Online (Sandbox Code Playgroud)
(空白也很重要,但我从上面省略了它们.)
Java中的标签用于控制程序中的流,并且是标识符,后跟冒号.
标签的一个例子是hello:.
标签与continue和break语句一起使用,以指定要continue或哪些控制结构break.
这里的问题是return声明:
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^
Run Code Online (Sandbox Code Playgroud)
有一个:紧接return 1,这使编译器认为有应该是一个标签那里.
但是,return 1它本身就是一个声明,因此,那里没有标签标识符,所以编译器抱怨它期待一个标签,但它无法找到一个正确形成的标签.
(fitness>g.fitness) ? return 1 : return -1;
^^^^^^^^ ^
statement label without an identifier
Run Code Online (Sandbox Code Playgroud)
返回是一个语句,而?:需要表达式,因此不被接受.
return (fitness > g.fitness) ? 1 : -1;
Run Code Online (Sandbox Code Playgroud)
可能就是你想要的.
解析代码时首先进行拆分以便更容易理解,这些单元称为令牌.我猜标签是指一种恰好是语句中第一个可能的语言结构.
要了解解析器如何决定提供该错误消息,需要深入了解解析器.从解析器提供良好的错误消息并非易事.
| 归档时间: |
|
| 查看次数: |
7438 次 |
| 最近记录: |