Moritz Lenz wrote:

Dave Whipp wrote:
One approach would simply be to edit Perl-6.0.0-STD.pm and add some markup. To pick a token at random:

=p6explain *
An asterix in a version expression matches any version
=end
token whatever { '*' {*} }

You convinced me, in-place documentation is probably the best.

This would have the advantage of better documenting the meaning of all the tokens/rules in the grammar file, which isn't always immediately obvious from reading it.

Damian's POD Parser can probably do much of the work of actually finding the "p6explain" blocks. Establishing a formal link between these and the token/rule might be more work; but probably isn't necessary, except for linting purposes.

Which leads me to the question how to do the annotation.

First of all I hope there are no objections against fiddling with STD.pm.

My approach so far (see <http://svn.pugscode.org/pugs/misc/perlhints/>)
has been to write blocks for each token like so:

key:  *
name: Regex Quantifier *
dsl:  Regex
syn:  <token>*
desc: matches <token> zero or more times
ex:   'ab'*  # matches the empty string, ab, abab, ababab, ...
link: S05:somwhere

A problem with this might be the lack of multiple language support - especially for the description.

I'm not sure if you would want docs expanded to huge size to fit every language in the sun and beyond, but can see real strengths in allowing it to be inline in order to "get it done".

What might be nice ( from my perspective - others may hate it ) is assigning a URI to each unique instance, so that multiple language support could be tagged on afterwards, and it could also help with the link section ( or replace it by reversing the link to many to one rather than one to one ) - if the synopsis were adjusted to reference these URIs then the linking info would flow back in the other direction?

The key for your index would then become the URI, and the database could then be hosted elsewhere ( of course, developers may wish to make there code contain something similar to the above to help with creating your data ? )

Steve

Reply via email to