我正在练习词汇、句法和语义上的差异(使用Java语言)。对于下面的集合,我想识别它们是词法错误、句法错误还是语义错误。只是想确保我做的对,并希望得到一些反馈。
a) double if; Syntactical Error
b) doif (1 ==1); Syntactical Error
c) x12 = “x12”; Semantic Error
d) int double = 1.0; Syntactical Error
e) 0-; Syntactical Error
f) int a = 09 – 90; Syntactical Error
g) int $10 = 10; No Error
h) char $dollar = ‘$’; No Error
我觉得我错过了最后两件事。不过,我使用Eclipse进行了检查,但没有显示任何错误。这真的“没有错误”吗?
发布于 2014-06-04 05:53:07
“没有错误”确实是正确的。美元符号是否允许--包括在-- Java标识符的开头 (尽管JLS建议只在机械生成的代码中使用它,或者用于访问遗留系统上已有的名称)。
发布于 2014-09-21 22:39:50
int a= 09-90;
词法错误八进制数字从零开始,可以使用0-7的数字.因此,09既不是八进制也不是整数。因此,在JAVA中它不是一个令牌。而且,任何在java中不是标记的东西都会出现词法错误。
doif (1 ==1);
语义错误 doif是一个完美的标识符(函数名),我们在这里传递它(1==1),它是真值。因此,这个例子遵循'function‘的语法。但是,这里的问题是doif函数在使用之前没有定义。标识符的未初始化使用会导致语义错误。因此,给定的示例是一种语义错误。
发布于 2018-08-20 07:48:47
对于任何语言,词汇、句法或语义错误都可以如下所示
词法分析-检查语言中是否存在所有标记。例如,foo a=1;
foo在java中不是令牌/关键字,所以词法错误。
句法分析-检查所有语句是否符合语法规则。int 1a=0;
没有词汇错误,但语法错误。不遵循命名标识符的语法规则。
语义分析-检查语句是否有意义。int a=1/0;
没有词法错误,句法错误,但语义错误。因为零除法是不可能的。
希望这能有所帮助。
https://stackoverflow.com/questions/24029944
复制相似问题