erlang的abstract code
September 30th, 2009
原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: erlang的abstract code
erlang的abstract code是编译的中间代码,很多工具如 erl_pp lint什么的都是根据这个做调整的。还有进一步的parse_transform也是基于它的。 所以,了解它非常重要。 erts user guide里面详细了描述了它的定义。我这里展示的是如何获取到某个模块的abstract code 以便进一步研究:
[root@localhost ~]# erl -s hello Erlang R13B02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] hello world [root@localhost ~]# cat hello.erl
-module(hello). -export([start/0]). start()-> io:format("hello world~n",[]).
[root@localhost ~]# erlc +debug_info hello.erl [root@localhost ~]# erl Erlang R13B02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.7.3 (abort with ^G) 1> rp(beam_lib:chunks(hello, [abstract_code])). {ok,{hello,[{abstract_code,{raw_abstract_v1,[{attribute,1, file, {"./hello.erl",1}}, {attribute,1,module,hello}, {attribute,2,export,[{start,0}]}, {function,4,start,0, [{clause,4,[],[], [{call,5, {remote,5,{atom,5,io},{atom,5,format}}, [{string,5,"hello world~n"},{nil,5}]}]}]}, {eof,6}]}}]}} ok 2>
对着文档开始好好分析吧。 Have fun!
Post Footer automatically generated by wp-posturl plugin for wordpress.
Categories: 网络编程
This is a good example for Erlang abstract code usage.
http://code.google.com/p/erlydtl/