Re: [jinterface] add erlang term parse/match/bind features
Vlad Dumitrescu <[email protected]> Wed, 31 Dec 2014 16:27:04 +0100
| Newsgroups | gmane.comp.lang.erlang.patches |
|---|---|
| Message-ID | <CAA-EFXvpRVhTJjECVJLuyxgtsQD8AVsDK=5P9xKCu8JmtY4yrA@mail.gmail.com> |
--===============4108887958684469393== Content-Type: multipart/alternative; boundary=001a11c380708fe524050b84be47 --001a11c380708fe524050b84be47 Content-Type: text/plain; charset=UTF-8 Hi Dmitriy, Nice implementation! I have something similar that I wanted to submit, but I like some of your details better. I have a few comments, after browsing the code just briefly: - I would prefer to have the OEMap changes as a separate PR, as it's a separate issue and there are more things to address there, like for example, OEMap could also implement Map, like OEList implements Iterable (and might implement List). - I don't like the name OEVarrier, it doesn't mean anything. Maybe OEMatcher would be better? - OEBind might be clearer as OEBinding, as it contains a set of bindings? - I think there are still some merge issues, like for example OEList:299 where the comment is from the old equals method best regards, Vlad On Tue, Dec 30, 2014 at 9:56 PM, Dmitriy Kargapolov < [email protected]> wrote: > This implements functionality similar to following C functions, which are > part of erl_interface application: > - ETERM *erl_format(FormatStr, ...); > - int erl_match(ETERM *Pattern, ETERM *Term); > > To acheve this new classes introduced: > * OtpErlangVar - variable placeholder; > * OtpErlangBind - variable values collection; > * OtpErlangParser - "erl_format" parser implementation; > * OtpErlangPattern - pattern abstraction with match/bind functions; > > Classes representing composite objects OtpErlangList, OtpErlangTuple, > OtpErlangMap and new OtpErlangVar implement interface OtpErlangVarrier > defining match and bind functions for these objects. > > Class OtpErlangMap reworked to be based on HashMap instead of two separate > lists keeping keys and values. This is close to native semantics of maps > and makes easier implementing basic map manipulations. > > It addition to OtpErlangBind custom user's class may be used as receiver > of matched variables values. Java reflection is used to prepare variable > value setters during the parse stage. Java doc has more details and > examples. Test cases implemented. > > git fetch https://github.com/x0id/otp.git jinterface_pattern_matching > > Thanks. > > > > > > _______________________________________________ > erlang-patches mailing list > [email protected] > http://erlang.org/mailman/listinfo/erlang-patches > --001a11c380708fe524050b84be47 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hi Dmitriy,<div><br></div><div>Nice implementation! I have= something similar that I wanted to submit, but I like some of your details= better.</div><div><br></div><div>I have a few comments, after browsing the= code just briefly:</div><div><br></div><div>- I would prefer to have the O= EMap changes as a separate PR, as it's a separate issue and there are m= ore things to address there, like for example, OEMap could also implement M= ap, like OEList implements Iterable (and might implement List).=C2=A0</div>= <div>- I don't like the name OEVarrier, it doesn't mean anything. M= aybe OEMatcher would be better?</div><div>- OEBind might be clearer as OEBi= nding, as it contains a set of bindings?</div><div>- I think there are stil= l some merge issues, like for example OEList:299 where the comment is from = the old equals method</div><div><br></div><div>best regards,</div><div>Vlad= </div><div><br></div></div><div class=3D"gmail_extra"><br><div class=3D"gma= il_quote">On Tue, Dec 30, 2014 at 9:56 PM, Dmitriy Kargapolov <span dir=3D"= ltr"><<a href=3D"mailto:[email protected]" target=3D"_blank">= [email protected]</a>></span> wrote:<br><blockquote class=3D"= gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-= left:1ex">This implements functionality similar to following C functions, w= hich are part of erl_interface application:<br> - ETERM *erl_format(FormatStr, ...);<br> - int erl_match(ETERM *Pattern, ETERM *Term);<br> <br> To acheve this new classes introduced:<br> * OtpErlangVar - variable placeholder;<br> * OtpErlangBind - variable values collection;<br> * OtpErlangParser - "erl_format" parser implementation;<br> * OtpErlangPattern - pattern abstraction with match/bind functions;<br> <br> Classes representing composite objects OtpErlangList, OtpErlangTuple, OtpEr= langMap and new OtpErlangVar implement interface OtpErlangVarrier defining = match and bind functions for these objects.<br> <br> Class OtpErlangMap reworked to be based on HashMap instead of two separate = lists keeping keys and values. This is close to native semantics of maps an= d makes easier implementing basic map manipulations.<br> <br> It addition to OtpErlangBind custom user's class may be used as receive= r of matched variables values. Java reflection is used to prepare variable = value setters during the parse stage. Java doc has more details and example= s. Test cases implemented.<br> <br> git fetch <a href=3D"https://github.com/x0id/otp.git" target=3D"_blank">htt= ps://github.com/x0id/otp.git</a> jinterface_pattern_matching<br> <br> Thanks.<br> <br> <br> <br> <br> <br> _______________________________________________<br> erlang-patches mailing list<br> <a href=3D"mailto:[email protected]">[email protected]</a><= br> <a href=3D"http://erlang.org/mailman/listinfo/erlang-patches" target=3D"_bl= ank">http://erlang.org/mailman/listinfo/erlang-patches</a><br> </blockquote></div><br></div> --001a11c380708fe524050b84be47-- --===============4108887958684469393== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ erlang-patches mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-patches --===============4108887958684469393==--