<div dir="ltr">Hello -<div><br>I'd like to announce the release of ETP v0.3. ETP is a parser for Java built with Antlr 4 that can parse a string representation of an Erlang term. The parsed model can be manipulated in Java, and rendered back to a string by calling toString().<br>
<br>The source can be found online at:<br><a href="http://metadave.github.io/etp/">http://metadave.github.io/etp/</a><br><br>The Maven artifact is available from the Sonatype OSS repository.<br><br><dependency><br>  <groupId>com.github.metadave</groupId><br>
  <artifactId>etp</artifactId><br>  <version>0.3</version><br></dependency><br><br><br>Here's a simple example:<br><br>ETPTuple tuple = <br>  (ETPTuple)ETP.parse("{mylist, [1,2,3,4], \n" +<br>
                      "my_string, \"Hello world\"}");<br>// All ETP objects subclass ETPTerm<br>// you can use "instanceof" to see what the result of the parse is<br><br>ETPAtom atom = (ETPAtom)tuple.getValue(0);<br>
System.out.println("Atom = " + atom);<br><br>ETPList list = (ETPList)tuple.getValue(1);<br>// use getValue() to access the list of terms<br>for(ETPTerm v : list.getValue()) {<br>    System.out.println("  List item " + v);<br>
}<br>ETPAtom my_string_atom = (ETPAtom)tuple.getValue(2);<br>System.out.println(my_string_atom);<br><br>ETPString s = (ETPString)tuple.getValue(3);<br>System.out.println(s.getValue()); // getValue() gets the "raw" value<br>
System.out.println(s.toString()); // toString() gets the string representation<br><br>// you can set values on the ETP structure and call toString() to render<br>// a new Erlang term<br>atom.setValue("new_atom_value");<br>
list.getValue().add(new ETPInteger(100));<br>System.out.println(tuple.toString());<br><br>which yields the following output:<br><br><div>Atom = mylist</div><div>  List item 1</div><div>  List item 2</div><div>  List item 3</div>
<div>  List item 4</div><div>my_string</div><div>Hello world</div><div>"Hello world"</div><div>{new_atom_value,[1,2,3,4,100],my_string,"Hello world"}</div><div><br></div><br>Cheers -<br>Dave<br><a href="https://github.com/metadave">https://github.com/metadave</a></div>
</div>