List Info

Thread: templates, macros and spaces




templates, macros and spaces
user name
2006-06-01 12:18:06
John Maddock wrote:
> 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&
gt;'''] [template pow[a,
>> b]
[a]'''<superscript>'''[b]'''</superscript&
gt;''' ]
>>
>> 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?

Indeed. At first I wondered what those built-ins are. So, I
noticed
builtins such as [link section.anchor Link text]. With
those, the
general syntax is:

    [markup no-space space allowed here]

The first argument may not contain any space while the
second argument
may. I guess this is a special case worth considering,
otherwise, we
cannot emulate the built-ins with templates. Note that this
is a
special case for binary arguments only.

> So:
> 
> [pow x 2]
> 
> does what you would expect.

Ok.

> [pow x a + b]
> 
> places "a + b" as the superscript, it's
the same as:
> 
> [pow x [a + b]]

Ok.

> while
> 
> [pow [x - y] [a + b]]
> 
> separates it's arguments as you'd expect (a bad
example though in the math 
> sense).

I see.

> 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?

I think that sounds logical and implementable. Thanks for
noting that.
Your comments are invaluable!

Regards,
-- 
Joel de Guzman
http://www.boost-cons
ulting.com
http://spirit.sf.net



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

about | contact  Other archives ( Real Estate discussion Medical topics )