Edwin Steiner <[EMAIL PROTECTED]> writes:

> The rule could be like:
>
>     \\F <printf_format_without_percent> <funny_character_expression>

After-afterthought:

We know: Everything between the \F and the next funny character is the
format specifier. This allows extensions to the printf-specifiers:

(These extension and more could also be used in C<but formatted>.)

rule format_specifier {
    ('-' | ' ') <fill_character>? <width>? ('.' <precision>)? <conversion>?
|
    <fill_character_no_minus>? <width>? ('.' <precision>)? <conversion>?
}

rule fill_character {
    '-' | <fill_character_no_minus>
}

rule fill_character_no_minus {
    <!before <conversion>> ( <[EMAIL PROTECTED] ]> | <escaped_character> )
}

(Hope I got that right.)

If there is no <conversion> specified, just do the alignment and
filling on the value (which is converted to string before that).

Examples:

    $x = 3;

    " \F6$x"   -->      3

    " \F-6$x"  --> 3

    " \F06$x"  --> 000003

    " \F*6$x"  --> *****3

    " \F-*6$x" --> 3*****

    " \F\$6$x" --> $$$$$3 (yes, it's ugly)

    " \F\-6$x" --> -----3

    " \F -6$x" --> -----3 (looks better without the backslash, I think)

    " \F--6$x" --> 3-----

    "\F*20$()" eq ('*' x 20)    (don't want to propose special syntax instead of $())

Another possible extension: If there is a <fill_character> specified,
followed by an 'x' and <width>, interpret it as <fill_character> x
<width> and don't expect the <funny_character_expression>:

    "\F*x20" eq ('*' x 20)

...quite irregular though.

-Edwin

Reply via email to