当前位置: 首页 > 面试题库 >

编译器编译哪个第一个Object或String?

田昊天
2023-03-14
问题内容

哪个类首先编译,Object或者String

Object需要相同的类作为返回类型toStringString扩展Object该类。


问题答案:

有很多方法可以实现编译器。但是,基本方法是解析源并构建符号表。然后使用该符号表将源代码转换为目标代码。

单遍编译器只能使用它已经遇到的符号。Pascal是旨在使用单遍编译器的语言示例。如果不是不可能的话,java使用单遍编译器将很难实现。

但是multi pass,大多数语言都使用编译器,因为单遍编译器的优点不再重要,在这种情况下,使用尚未定义的符号变得微不足道,因为假设它们将在解析阶段的后期遇到。

因此,只要同时java.lang编译整个包,就可以解决交叉依赖性。另一方面,如果您尝试单独编译每个类,则解析器将抱怨,因为它将到达解析过程的末尾并且具有未解析的符号。



 类似资料:
  • 在前面章节里定义的有些宏很长。为了生成展开式,if-match 需要用到图 18.7 和18.8 中的所有代码,以及 [示例代码 18.1] 中的 destruc 。如此之长的宏自然而然地将我们带入最后一个主题:嵌入式语言。如果说短小的宏是Lisp 的扩展,那么大的宏就是在其中定义子语言 可能带有它们自己的语法或者控制结构。我们在 if-match 中看出了些端倪,在这个宏里,它有自己的一套表达变

  • 1.1 编译语言和解释语言 人们通常把编程语言描述为编译语言或者解释语言。前者的意思是程序被翻译成机器语言,之后由硬件执行;而后者的意思是程序被软件解释器读取并执行。例如,C被认为是编译语言,而Python被认为是解释语言。但是二者之间的界限并不总是那么明显。 首先,许多语言既可以编译执行也可以解释执行。例如,存在C的解释器,和Python的编译器。其次,类似Java的语言混合了这两种方法,它先把

  • 编译器 编译器将用一种语言编写的代码转换为另一种语言,而无需更改程序的含义。还期望编译器应该使目标代码高效且在时间和空间方面得到优化。 编译器设计原理提供了翻译和优化过程的深入视图。编译器设计涵盖了基本的转换机制以及错误检测与恢复。它包括词法,语法和语义分析作为前端,以及代码生成和优化作为后端。 为什么要学习编译器设计? 计算机是软件和硬件的平衡组合。硬件只是机械设备的一部分,其功能由兼容的软件控

  • 我是一个打字稿noob和javascript假人,所以请尽可能明确,但不要太书呆子气。 我的基本理解是,Typescript被一个神秘的存在预编译成Javascript。然后由浏览器呈现Javascript。然而,如果javascript对浏览器来说太高级了,您可以使用babel将javascript代码变成另一个Javascript版本,比如ES5(我听说几周前Internet Explorer

  • 词法分析器 语法分析器 语义分析及中间代码生成 代码优化 代码生成