[erlang-questions] core erlang evaluator?

Torbjorn Tornkvist tobbe@REDACTED
Thu Nov 15 10:36:03 CET 2007


Ulf Wiger wrote:
> Is there a core erlang evaluator somewhere, and I just couldn't find it?
> 
> I am looking for a way to plug in the Haskerl compiler into
> my hacked shell. The Haskerl compiler is written in Haskell,
> and it compiles to core erlang. Perhaps the compiler isn't
> complete enough to compile itself?

No, it can't (at the moment :-)
Couldn't you just compile it to beam and load it?

> 
> For now, I've made a simple lersp plugin
> (lersp interprets "an approximation of scheme"):
> 
> 2> @ mod(lersp_exp).
> (+ 1 3)
> @
> 4

Cool!

--Tobbe

> 
> (I added options to inspect the resulting parse tree:
> 
> 3> @ mod(lersp_exp), return(parsed).
> (+ 1 3)
> @
> [[{call,1,
>         {remote,1,{atom,1,lersp_exp},{atom,1,eval}},
>         [{cons,0,{cons,0,{atom,0,'+'},{string,0,[1,3]}},{nil,0}}]}]]
> 
> (...as well as pretty-printing the parsed code - might be handy e.g. if
> the block contains weird macro expansion)
> 
> 4> @ mod(lersp_exp), return(pretty).
> (+ 1 3)
> @
> "lersp_exp:eval([['+'|\"\\001\\003\"]]).\n"
> 
> 
> The callback module that makes this happen:
> 
> -module(lersp_exp).
> 
> -export([shell_parse/3,
> 	 eval/1]).
> 
> shell_parse(Str, Bs, Env) ->
>     Exprs = lersp_parse:parse_all(Str),
>     {erl_eval,
>      [[{call,1,{remote,1,{atom,1,?MODULE},{atom,1,shell_eval}},
> 	[erl_parse:abstract(Exprs)]}]]}.
> 
> shell_eval(Exprs) ->
>     {Value, _} = lersp_eval:eval_exprs(Exprs),
>     Value.
> 
> 
> 
> BR,
> Ulf W




More information about the erlang-questions mailing list