[erlang-questions] erlang source code browser

Richard O'Keefe ok@REDACTED
Fri Sep 14 06:30:28 CEST 2012

I have my own multi-programming-language => multiple markup language
program, and it does handle Erlang, but it doesn't do cross-references.
There are three reasons for this:
(a) it started as a program for transforming code snippets to LaTeX
for inclusion in books, papers, handouts;
(b) because it handles so many languages, some of them with dynamic
syntax, it does no actual parsing, so cannot determine arity of
(c) thanks to the Erlang preprocessor, and the ability to plug
transformation modules in, you can't actually parse Erlang source
code without *being* Erlang.

Consider this little gem:

-define(PINE, cone).
-define(BARK, ?PINE(2, (?PINE(1), 3))).

pine(1) -> ?PINE(1);
pine(2) -> ?PINE(2, 3);
pine(3) -> ?BARK.

?PINE(1) -> ok.

?PINE(2, 3) -> ok.

Suppose you have your cursor ?PI<here>NE(1) and you want there to
be a link that will take you to the definition of the function
being called.  It's easy enough to get to the -define line, but
getting to cone/1 is another matter.

Or suppose you have your cursor ?BA<here>RK and you want to link
to "the" function.  Is it cone/1 or cone/2?

Is it any wonder that I jumped up and down shouting
"Delenda est preprocessor!" until I realised I was never going
to get anywhere?

(The best C to HTML tool I know of hooks into a C preprocessor.
I had a bit of a struggle with the installation process because
of that.)

More information about the erlang-questions mailing list