Is it possible to convert Abstract Syntax Tree into XML code in Elixir

Is it possible to convert Abstract Syntax Tree into XML code in Elixir

You have already posted a similar question in this topic.

Actually I posted a similar questions, but this time I wanted to know specifically whether there is exactly an Elixir AST to XML code convertor.

How should the resulting XML look like, you didn’t even specify this…

As normal XML does :slight_smile:

No just kidding, there is not a particular format, just showing that it has keywords like defmodule, def, print, IO as library …

A basic form of XML code. However if possible a pretty print diagram for an AST would be much better in this specific case.

Probably not something already made, but it does not seem impossible with the help of any of these packages.

So "<?xml foo><ast>#{File.read("foo.ex") |> elem(1)}</ast>" is fine for you?

Follows your “specification” of “should be XML and contain the info if there was a defmodule etc”.

2 Likes

Sorry, is that a command or an output result ?

Thats a string that uses interpolation to insert a given files sourcecode into the string. As its wrapped in tags, its close enough to XML.

You might need to escape, as I realise now…

1 Like

The point is that there is no “normal” XML. You could give an example snippet of how the XML could look like. Choosing which fields you want to expose and how to represent the AST in XML is 100% up to you.

Library wise, one of the packages posted by @kokolegorille will probably work to serialize Elixir data structures into XML, but they will require some serialization logic on your side.

3 Likes

I’d just use the streaming serializer of Erlang’s builtin :xmerl package. It’s extremely performant and the fact that Elixir AST is basically a recursive 3-tuples structure (if I remember correctly) should make it extremely easy.

1 Like