<div dir="ltr"><div><div>I would count as one of the people not being fond of ';;'. However, there is something I don't understand about your proposal: where in the AST tree would you attach those floating attributes?<br>

<br></div>My understanding of Alain's ";;[@..]" was that he introduced a specific "empty item" in the AST of the current structure/signature. Extending this technique to the example you've shown would require adding such phony items in a few more syntactic positions, which may or may not be a good idea.<br>

</div><div><div><div><div><div></div></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 11, 2013 at 6:39 PM, Leo White <span dir="ltr"><<a href="mailto:lpw25@cam.ac.uk" target="_blank">lpw25@cam.ac.uk</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I've been looking recently at encoding inline documentation<br>
(i.e. ocamldoc comments) within attributes, as part of my work on<br>
opam-doc. Mostly this works fine, but there is an issue with comments<br>
that are not attached to any item (e.g. section headers).<br>
<br>
I had thought that the existing support for "structure/signature<br>
attributes" would be sufficient. By these I mean attributes like:<br>
<br>
  ;;[@@doc "Hello World"]<br>
<br>
which are parsed as separate structure/signature items rather than<br>
attached to an existing structure/signature item.<br>
<br>
The problem is that unattached attributes can appear in a number of<br>
places that structure attributes cannot. Some examples:<br>
<br>
  type t = Foo of s<br>
<br>
  (** {3 Section} *)<br>
<br>
  and s = Bin of t option<br>
<br>
  class type foo = object<br>
    method a : int<br>
<br>
    (** Some comment *)<br>
<br>
    method b : int<br>
  end<br>
<br>
and so on.<br>
<br>
In both these cases it is hard to add support for structure items in<br>
those locations because that would require supporting ';;' in those<br>
locations as well.<br>
<br>
I have also heard a number of complaints about the ";;[@@ foo]"<br>
syntax. Firstly, that it is ugly and its meaning is not particularly<br>
obvious, and secondly that users may be confused when<br>
<br>
  type t;;<br>
  [@@ sexp]<br>
<br>
silently does not work.<br>
<br>
So my suggestion would be to (reluctantly) add a third form of<br>
attribute:<br>
<br>
  [@@@ foo]<br>
<br>
which means basically the same as:<br>
<br>
 ;;[@@ foo]<br>
<br>
does now. This could be supported in the additional locations that I<br>
mentioned above, and would allow for a syntax error for the ";;[@@sexp]"<br>
mistake.<br>
<br>
Since this follows the existing pattern of [@...] and [@@...], it should<br>
not be too much trouble to tell users about [@@@ ...], and certainly no<br>
worse than explaining ";;[@@...]" to them.<br>
<br>
Regards,<br>
<br>
Leo<br>
_______________________________________________<br>
wg-camlp4 mailing list<br>
<a href="mailto:wg-camlp4@lists.ocaml.org">wg-camlp4@lists.ocaml.org</a><br>
<a href="http://lists.ocaml.org/listinfo/wg-camlp4" target="_blank">http://lists.ocaml.org/listinfo/wg-camlp4</a><br>
</blockquote></div><br></div>