Java 关键词是如何开发的?

Java 关键词是如何开发的?,java,compilation,keyword,Java,Compilation,Keyword,James Gosling博士是否为Java关键字编写了代码 如果是 如何像查看源代码一样查看Java关键字代码 有没有办法创建用户定义的关键字 以下是我的猜测:没有Java关键字代码,Java编译器拥有一个关键字列表,这有助于编译器理解代码 这个猜测正确吗 James Gosling博士是否为Java关键字编写了代码 是的,当他编写第一个Java编译器时,他可能编写了处理关键字编译的代码 如何像查看源代码一样查看Java关键字代码 while或if等后面没有“Java方法”。这些是编译器专

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

如果

  • 如何像查看源代码一样查看Java关键字代码
  • 有没有办法创建用户定义的关键字
以下是我的猜测:没有Java关键字代码,Java编译器拥有一个关键字列表,这有助于编译器理解代码

这个猜测正确吗

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

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

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

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

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


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

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

对。差不多就是这样


来源:我是一名javac开发人员

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

如果您想定义自己的关键字,您可以查看Scala,事实上Scala中的所有关键字实际上都是方法


下面是一个例子,在其他语言中,您可以实现一个类似于“使用”关键字的方法,以便显式地处理对象。

有一篇关于java字节码中的流控制的有趣文章,我认为可能很有趣。java编译器知道java关键字及其含义。只有这样,它才能将java源代码转换为字节码(同样有关键字)@aioobe:我投票决定结束这个问题,因为它太宽泛了,因为这个问题没有缩小到可以用简洁的方式回答:“关键字是如何开发的”对于格式来说根本不够具体。仅仅因为OP接受了一个答案并不意味着什么,尤其是当你考虑恐慌接受行为时,当问题被关闭时。请参阅帮助中心页面:琐事:出于效率考虑,javac有一个手工编写的解析器。“不,您不能创建用户定义的关键字。”虽然这句话得到了JLS的支持,但您对库如何存在以覆盖javac编译行为有何感想?基于编译器实现的实验修改方式(通过反射)通过创建注释处理器?例如:我想说,这似乎不是非常可移植或稳定。任何头脑正常的程序员都可能会同意,依赖这种注释处理器是不好的做法。出于好奇,什么是javac开发人员?
javac
是Oracle开发的Java编译器吗(和其他)与OpenJDK一起提供。我当时是Oracle的员工,也是langtools团队的成员。