Joel de Guzman wrote:

> My proposed syntax:
>
>    x[super 2]
>
> does not have this problem. You do not need to add a space between
> x and the template /super/. It is also sufficiently unambiguous.
> It does not look like a common function call so you do not have
> to resort to some naming convention, like double-underscores.
>
> If there are no objections, I'd like to switch to this syntax to
> templates. Applying it to macros will break existing qbk files,
> which I do not want to do. So, I'll just let them be and get
> them deprecated. That means, I'd like templates to totally replace
> macros.
>
> So, going back to John's experiment, I'd like the final qbk code
> to be:
>
>     [template alpha[] '''α''']
>     [template super[text]
>     '''<superscript>'''[text]'''</superscript>'''] [template pow[a,
> b] [a]'''<superscript>'''[b]'''</superscript>''' ]
>
> Notice [text], [a] and [b] are bracketed. They are essentially
> templates that exist only in the duration of the template body
> (that is their scope). Notice too that alpha[] is a nullary
> template.
>
> Then...
>
>     x[super 2]
>     [pow[x][2]]
>     [pow[alpha][2]]
>
> I am confident I can get this to work. Comments? Objections?

I quite like that, certainly it makes univariate macros look just like 
quickbook built-ins, I'm not so sure about the multivariate syntax, but I 
don't have strong objections.

Hmmm, currently builtins with multiple arguments have them separated by 
whitespace, could we preserve this behaviour and fall back to putting [] 
around arguments only if the argument contains whitespace?

So:

[pow x 2]

does what you would expect.

[pow x a + b]

places "a + b" as the superscript, it's the same as:

[pow x [a + b]]

while

[pow [x - y] [a + b]]

separates it's arguments as you'd expect (a bad example though in the math 
sense).

This follows the existing rules for builtin's I think, with the extension 
that arguments can contain deliberate whitespace if you put [] around the 
arguments.  And of course [] would be an empty-string-argument.

How does that sound?

John. 



_______________________________________________
Boost-docs mailing list
[email protected]
Unsubscribe and other administrative requests: 
https://lists.sourceforge.net/lists/listinfo/boost-docs

Reply via email to