[erlang-questions] Adding new operators?
Anthony Ramine
n.oxyde@REDACTED
Wed Apr 10 18:31:28 CEST 2013
That wouldn't work because you need one new token per operator you want to add to the language, parse transforms work on abstract syntax trees which are returned by the parser, a level higher than tokens.
On the other hand he can also abuse existing expressions by using them in ways which are illegal in Erlang.
For example he could write a parse transform for a parallel send operator like this:
+[Pids/parallel] ! Message.
This is beyond ugly but at least it's quite obvious that some spooky action at the distance is going on.
Regards,
--
Anthony Ramine
Le 10 avr. 2013 à 16:41, Justin Calleja <calleja.justin@REDACTED> a écrit :
> Hi David,
>
> You should be able to do that with a parse_transform/2. Look up parse transform: you basically get to implement a function which the compiler calls at compilation time passing it a formal representation of the source code it's compiling (a.k.a abstract forms... though I'm not entirely sure about the terminology).
>
> You can then use the erl_syntax module to manipulate these forms.
>
> cheers,
> Justin
>
>
> On 8 April 2013 08:21, Anthony Ramine <n.oxyde@REDACTED> wrote:
> Hello David,
>
> A fancy way to extend the Erlang syntax would be to have something like Camlp4, a powerful and extensible preprocessor for OCaml. It has a powerful quotation system which it itself uses to implements its parser construct, to extend OCaml's syntax at compile-time. I have began writing a quotation system for Erlang but didn't have the time finish it yet [1].
>
> Regards,
>
> [1] https://github.com/nox/otp/tree/brackets
>
> --
> Anthony Ramine
>
> Le 8 avr. 2013 à 02:12, David Goehrig <dave@REDACTED> a écrit :
>
> > Next step is integrating into the stack better. But the question remains, what is the best way to add a new operator.
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list