- '*', indicating a width, taken from the argument list,
- '*' and a digit sequence, followed by '$', indicating a width, taken
from a positional argument,
- - '.' and a digit sequence, indicating a precision,
+ - '.' and an optional nonempty digit sequence, indicating a precision,
- '.' '*', indicating a precision, taken from the argument list,
- '.' '*' and a digit sequence, followed by '$', indicating a precision,
taken from a positional argument.
"abc%2$2*1$g"
# Invalid: twice width (numbered)
"abc%2$*1$2g"
+# Valid: null precision (unnumbered)
+"abc%.f"
+# Valid: null precision (numbered)
+"abc%1$.f"
# Invalid: twice precision (unnumbered)
"abc%.4.2g"
# Invalid: twice precision (numbered)