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&#39;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&#39;t like the name OEVarrier, it doesn&#39;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">&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">=
[email protected]</a>&gt;</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 - &quot;erl_format&quot; 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&#39;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==--