soc*_*soc 71 java compiler-construction language-design let
Java编译器似乎支持(寻找)let
表达式.com.sun.tools.javac.tree.*
LetExpr
JCTree中的一条评论甚至提到了一些语法
(let int x = 3; in x+2)
Run Code Online (Sandbox Code Playgroud)
这当然不被语言的语法所接受,并在早期的编译阶段被拒绝.
我想知道这个构造的起源,这是我以前从未见过的.
它javac
是由内部使用还是由其他工具合成?它可能只是Java早期的一件神器,它的语言功能从未见过光明吗?
今天有什么有用的东西吗?
一般来说,它为什么存在?
Arm*_*her 46
一般来说,它为什么存在?
谷歌建议它存在于自动装箱中.
如果您有这样的代码:
Integer foo = 0;
foo++;
Run Code Online (Sandbox Code Playgroud)
Java内部将其转换为此帮助程序表达式:
Integer foo = 0;
let int foo_helper = foo.intValue() in foo_helper++;
Run Code Online (Sandbox Code Playgroud)
资料来源:http://bugs.sun.com/bugdatabase/view_bug.do?video_id = 6614974
该表达式显然没有语法表示,它只是一个简化编译的AST级转换.
归档时间: |
|
查看次数: |
16500 次 |
最近记录: |