在标记化或解析过程中,JavaScript中是否出现语法错误?

在标记化或解析过程中,JavaScript中是否出现语法错误?,javascript,google-chrome,v8,Javascript,Google Chrome,V8,在标记化或解析过程中,JavaScript中是否出现语法错误? 在代码生成过程中是否抛出引用错误 在标记化或解析过程中,JavaScript中是否出现语法错误 标记器是解析器的一部分,因此答案是肯定的 在代码生成过程中是否抛出引用错误 在计算代码之前会抛出一些引用错误(如果这就是您所说的“代码生成”的意思的话) 政府对此十分清楚: 实现必须在相关时间报告大多数错误 计算ECMAScript语言构造。早期错误是一种错误 在评估任何错误之前可以检测和报告的错误 在包含错误的程序中构造。[…] 所有不

在标记化或解析过程中,JavaScript中是否出现语法错误? 在代码生成过程中是否抛出引用错误

在标记化或解析过程中,JavaScript中是否出现语法错误

标记器是解析器的一部分,因此答案是肯定的

在代码生成过程中是否抛出引用错误

在计算代码之前会抛出一些引用错误(如果这就是您所说的“代码生成”的意思的话)

政府对此十分清楚:

实现必须在相关时间报告大多数错误 计算ECMAScript语言构造。早期错误是一种错误 在评估任何错误之前可以检测和报告的错误 在包含错误的程序中构造。[…] 所有不是早期错误的错误都是运行时错误

实现必须处理以下类型的任何实例: 作为早期错误的错误:

  • [……]
  • 尝试对任何值调用PutValue,该值的早期 可以确定该值不是参考值(用于 例如,执行赋值语句
    3=4

试试看怎么样?
“这是在解析过程中吗”?!&&undefinedFunction(“迟来”)&&knownFunction(unknownVariable,“更晚来”)
…但实际上它并不是那么简单(优化会使事情变得更复杂)。“JavaScript在标记化或解析过程中是否出现语法错误?”看起来解析器抛出语法错误(尝试运行
5foo
)。然而,这很可能是特定于实现的。实际上,可以在解析时和运行时()抛出ReferenceError(有一种称为“早期错误”)。实际上,标记器是编译器的一部分,解析器只是从标记生成“树”。虽然我现在确实看到引用错误在早期错误点抛出。啊,我明白了,你可以把它们看作编译器的不同部分,并且有一个令牌流作为解析器的输入。无论如何,语法错误可能发生在流程的不同阶段:标记器无法识别标记,解析器无法将标记放入解析树,或者代码生成器/解释意识到树无效(描述无效代码)。在每个步骤中需要多少(或:哪种)逻辑只是编译器设计的决定。我不知道V8是怎么做到的。