返回信息流rt,那么其他语言呢,像C++, golang之类的,
然后其他的脚本语言,python, ruby之类的可以支持解析执行期间修改ast吗
这是一条镜像帖。来源:北邮人论坛 / java / #60968同步于 2019/1/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java可以编译期间修改源代码(也就是lombok的实现原理)
cc19931002
2019/1/15镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
嗯,应该是都可以动态修改的,只是这个动态修改开不开放给用户,我就是想问下其他语言有没有开放这种能力
【 在 liuyehcf 的大作中提到: 】
: 这要看编译器给不给你这样的入口了。。。Java能这么玩就是因为编译器支持动态修改ast
: 发自「贵邮」
java
classloader了解一下
instrumentation了解一下
另外,
cglib了解一下
asm了解一下
c++:
dlopen了解一下
llvm了解一下
golang:想都别想
python:
exec了解一下
eval了解一下
repl了解一下
ipython了解一下
jupyter了解一下
ruby:
也有eval吧
irb了解一下
jupyter了解一下
别的语言:
terra语言了解一下
julia语言了解一下
scala语言了解一下
混合语言:
Java scripting api(注意和javascript不是一个东西)
truffle/graal和ployglot了解一下
总的来说
multi-stage programming了解一下
谢谢暖神哈,其他语言我不太了解,java的你说的那几个东西我大概了解,但是跟我需求的不太一样哈,你说的那些类似于java探针技术哈,类加载进来动态去更改一下字节码。我想的是编译期间更改语法树,不是已经生成字节码了然后在字节码加载进来的时候修改字节码来实现。java是有这个支持的,之前一个小demo我已经大概跑通了,但是因为公司这边可能要搞多语言,所以想了解下其他语言有没有这种类似的支持,再次谢谢暖神哈,你说的后面几个语言我也照你说的去调研下。。
【 在 nuanyangyang 的大作中提到: 】
: java
: classloader了解一下
: instrumentation了解一下
: ...................
那么,编译器插件了解一下。不过,修改编译器的行为等于扩展一个语言。
c++的话有各种preprocessor,比如cpp(c preprocessor),就是处理宏展开的那个。qt有moc。别的框架的话,都可以自己写预处理器。
【 在 cc19931002 的大作中提到: 】
: 谢谢暖神哈,其他语言我不太了解,java的你说的那几个东西我大概了解,但是跟我需求的不太一样哈,你说的那些类似于java探针技术哈,类加载进来动态去更改一下字节码。我想的是编译期间更改语法树,不是已经生成字节码了然后在字节码加载进来的时候修改字节码来实现。java是有这个支持的,之前一个小demo我已经大概跑通了,但是因为公司这边可能要搞多语言,所以想了解下其他语言有没有这种类似的支持,再次谢谢暖神哈,你说的后面几个语言我也照你说的去调研下。。
膜[ema20]
【 在 nuanyangyang 的大作中提到: 】
: java
: classloader了解一下
: instrumentation了解一下
: ...................