Want more features on Pastebin? Sign Up, it's FREE!
Guest

erl_syntax problems

By: a guest on Mar 13th, 2013  |  syntax: Erlang  |  size: 2.63 KB  |  views: 38  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. -module(esyntax).
  2. -compile(export_all).
  3.  
  4. f() ->
  5.         FunctionBuilder = function_builder(get_send_msg_info),
  6.         ClauseBuilder = clause_builder([], none),
  7.         FunctionBuilder(ClauseBuilder(erl_syntax:list(erl_syntax:atom(abz)))).
  8.  
  9. function_builder(FunctionName) ->
  10.         fun(Clauses) ->
  11.                         erl_syntax:function(erl_syntax:atom(FunctionName), Clauses)
  12.         end.
  13.  
  14. clause_builder(Patterns, Guard) ->
  15.         fun(Body) ->
  16.                         erl_syntax:clause(Patterns, Guard, Body)
  17.         end.
  18.  
  19. %%%%%%%%%%%%%
  20.  
  21. 55> SyntaxTree = esyntax:f().
  22. {tree,function,
  23.     {attr,0,[],none},
  24.     {function,
  25.         {tree,atom,{attr,0,[],none},get_send_msg_info},
  26.         {tree,clause,
  27.             {attr,0,[],none},
  28.             {clause,[],none,
  29.                 {tree,list,
  30.                     {attr,0,[],none},
  31.                     {list,{tree,atom,{attr,0,[],none},abz},none}}}}}}
  32. 56> erl_syntax:is_tree(SyntaxTree).
  33. true
  34. 57> erl_syntax:type(SyntaxTree).
  35. function
  36. 58> erl_syntax:revert(SyntaxTree).
  37. ** exception error: no function clause matching
  38.                     erl_syntax:'-revert/1-lc$^1/1-1-'({tree,clause,
  39.                                                        {attr,0,[],none},
  40.                                                        {clause,[],none,
  41.                                                         {tree,list,
  42.                                                          {attr,0,[],none},
  43.                                                          {list,
  44.                                                           {tree,atom,
  45.                                                            {attr,0,[],none},
  46.                                                            abz},
  47.                                                           none}}}})
  48.      in function  erl_syntax:'-revert/1-lc$^0/1-0-'/1
  49.      in call from erl_syntax:'-revert/1-lc$^0/1-0-'/1
  50.      in call from erl_syntax:revert/1
  51. 59> erl_syntax:revert_forms([SyntaxTree]).
  52. ** exception exit: {function_clause,
  53.                     [{erl_syntax,'-revert/1-lc$^1/1-1-',
  54.                       [{tree,clause,
  55.                         {attr,0,[],none},
  56.                         {clause,[],none,
  57.                          {tree,list,
  58.                           {attr,0,[],none},
  59.                           {list,{tree,atom,{attr,0,[],none},abz},none}}}}]},
  60.                      {erl_syntax,'-revert/1-lc$^0/1-0-',1},
  61.                      {erl_syntax,'-revert/1-lc$^0/1-0-',1},
  62.                      {erl_syntax,revert,1},
  63.                      {erl_syntax,revert_forms_1,1},
  64.                      {erl_syntax,revert_forms,1},
  65.                      {erl_eval,do_apply,5},
  66.                      {shell,exprs,7}]}
  67.      in function  erl_syntax:revert_forms/1
clone this paste RAW Paste Data