【问题标题】:How are keywords developed?关键词是如何开发的?
【发布时间】:2015-05-11 08:39:12
【问题描述】:

James Gosling 博士是否为 Java 关键字编写过代码?

如果

  • 如何像查看源代码一样查看Java关键字代码?
  • 有没有办法创建用户定义的关键字?

以下是我的猜测: 没有 Java 关键字代码,Java 编译器持有一个关键字列表,这有助于编译器理解代码。

这个猜测正确吗?

【问题讨论】:

  • 有一篇关于 java 字节码中的流控制的有趣文章 - artima.com/underthehood/flowP.html - 我认为可能很有趣。
  • Java 编译器知道 java 关键字及其含义。只有这样它才能将java源代码转换为字节码(同样有关键字
  • @aioobe:我投票结束了这个问题,因为它太宽泛了,因为这个问题没有缩小范围,无法以简洁的方式回答:“关键字是如何开发的”对于@987654322 来说不够具体@ 格式完全。仅仅因为 OP 接受了答案并不意味着任何事情,尤其是当您考虑到从问题结束时看到的恐慌接受行为时。查看帮助中心页面:stackoverflow.com/help/closed-questions

标签: java compilation keyword


【解决方案1】:

James Gosling 博士是否为 Java 关键字编写过代码?

是的,当他编写第一个 Java 编译器时,他可能编写了处理关键字编译的代码。

如何像查看源码一样查看Java关键字代码?

whileif 等后面没有“Java 方法”。这些是编译器专门处理的语言原语。

有没有办法创建用户定义的关键字?

不,您不能创建用户定义的关键字。关键字的语义在 Java 语言规范中指定,并由编译器进行特殊处理。

没有 Java 关键字代码。 Java 编译器拥有关键字列表,有助于编译器理解代码。

是的。差不多就这些了。

来源:我是 javac 开发人员

【讨论】:

  • “不,您不能创建用户定义的关键字。”虽然此声明得到 JLS 的支持,但您如何看待库如何存在以覆盖 javac 编译行为,基于如何通过创建注释处理器来实验性地修改编译器实现(通过反射)?例如:github.com/light/JOps
  • 我会说这似乎不太便携或稳定。任何头脑正常的程序员都可能同意依赖这种注释处理器是一种不好的做法。
  • 出于好奇,什么是 javac 开发人员?
  • javac 是由 Oracle(和其他公司)开发的 Java 编译器,随 OpenJDK 一起提供。我当时是 Oracle 的一名员工,也是 langtools 团队的成员。
【解决方案2】:

通常,编写能够将语言转换为其他语言的软件的过程是由“编译器的编译器”工具通过指定语法来完成的,通常使用BNF 形式。该语言的第一个可用版本在许多情况下用于创建编译器本身,以证明该语言的有效性。如果你想通过改变关键字和添加不同的关键字来扩展java,你应该创建一个新的语言,可能从Java Grammar itself开始。

【讨论】:

  • 琐事:出于效率原因,javac 有一个手写解析器。
【解决方案3】:

如果你想定义自己的关键字,你可以看一下Scala,实际上Scala中的所有关键字实际上都是方法。

这是一个示例,您可以在该示例中实现类似于其他语言中的“使用”关键字的方法,以显式处理对象,http://blog.omega-prime.co.uk/2007/08/25/implementing-the-disposable-pattern-in-scala/

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2020-01-23
    • 2023-01-04
    • 2019-10-03
    相关资源
    最近更新 更多