parse_trans/doc
2012-12-19 17:29:53 +01:00
..
ct_expand.md added LC form to codegen:gen_function/2 2012-12-14 22:57:47 +01:00
edoc-info types added in exprecs 2011-10-23 13:52:05 +02:00
erlang.png forgot to add new files 2009-09-11 09:29:39 +00:00
exprecs.md added LC form to codegen:gen_function/2 2012-12-14 22:57:47 +01:00
overview.edoc corrected license texts (EPL 1.1) 2012-03-05 18:36:32 +01:00
parse_trans_codegen.md improved error reporting, return/2, format_exception/2 2012-12-18 15:50:17 +01:00
parse_trans_mod.md updated docs 2012-01-28 16:30:05 +01:00
parse_trans_pp.md added LC form to codegen:gen_function/2 2012-12-14 22:57:47 +01:00
parse_trans.md Added revert_form/1; deal with revert bugs 2012-12-19 17:29:53 +01:00
README.md added LC form to codegen:gen_function/2 2012-12-14 22:57:47 +01:00
stylesheet.css forgot to add new files 2009-09-11 09:29:39 +00:00

#The parse_trans application#

Authors: Ulf Wiger (ulf@feuerlabs.com).

A generic parse transform library This library is intended to simplify the task of writing parse transform modules for Erlang.

#Introduction to parse transforms#

##The simplest transform##

The very simplest transform we can make is one that doesn't change a thing. For convenience, we will at least print the forms. This will enlighten us as to what the forms actually look like.

-module(test_pt).

-export([parse_transform/2]).

parse_transform(Forms, _Options) -> io:fwrite("Forms = ~p~n", [Forms]), Forms.

Trying this with a very simple module:

-module(ex1).
-export([add/2]).

add(X,Y) -> X + Y.

1> c(ex1, [{parse_transform,test_pt}]).
Forms = [{attribute,1,file,{"./ex1.erl",1}},
{attribute,1,module,ex1},
{attribute,2,export,[{add,2}]},
{function,4,add,2,
[{clause,4,
[{var,4,'X'},{var,4,'Y'}],
[],
[{op,5,'+',{var,5,'X'},{var,5,'Y'}}]}]},
{eof,6}]
{ok,ex1}

##transform/4##

...

#Current limitations#

...

##Modules##

ct_expand
exprecs
parse_trans
parse_trans_codegen
parse_trans_mod
parse_trans_pp