这两个错误,词汇和语义之间有什么区别?
ngf-thumbnail
第一个是语义错误吗?既然你不能为int分配一个文字?至于第二个,个别令牌搞砸了,所以它会是词汇?这是我的思考过程,我可能错了,但我想更多地了解这一点。
答案 0 :(得分:1)
实际上有三种公认的解释水平:词汇,句法和语义。词法分析将一串字符转换为标记,语法将标记构建为语言中的有效语句,并且语义正确地解释这些语句以执行某些算法。
您的第一个错误是语义:虽然所有令牌都是合法的,但在Java中将字符串常量赋给整数变量是不合法的。
您的第二个错误可能被归类为词汇(因为字符串“inw”不是有效的关键字)或语法(“inw”可能是变量的名称,但在其中具有变量名称不是合法的语法上下文)。
语义错误也可能是语言中合法的,但不代表预期的算法。例如:"1" + n
是完全有效的代码,但如果它打算进行算术加法,则会出现语义错误。现代编译器可以捕获一些语义错误,但这些语义错误取决于程序员的意图。
有关详细信息,请参阅whats-the-difference-between-syntax-and-semantics的答案。