- From: fuchsia via GitHub <sysbot+gh@w3.org>
- Date: Tue, 25 Jul 2017 20:32:54 +0000
- To: public-svg-issues@w3.org
Okay, unless I've screwed something else up, the grammar should be:
```
elliptical_arc_argument::=
unsigned_float comma_wsp? unsigned_float comma_wsp? float comma_wsp
flag comma_wsp? flag comma_wsp? coordinate_pair
elliptical_arc_closing_argument::=
unsigned-float comma_wsp? unsigned-float comma_wsp? float comma_wsp
flag comma_wsp? flag comma_wsp? closepath
bearing_argument_sequence::=
bearing_argument | (bearing_argument comma_wsp? bearing_argument_sequence)
bearing_argument ::= float
sign ::= "+" | "-"
digits ::= [0-9]+
exponent ::= ( "E" | "e" ) sign? digits
fraction ::= ( digits ( "." digits? )? ) | ( "." digits )
unsigned_float ::= fraction exponent?
float ::= sign unsigned-float
coordinate ::= signed-float
```
I've reverted to `"E" | "e"` in the `exponent` for consistency with the rest of the spec.
I've created `bearing_argument` for semantic reasons. (Separate issue: aren't multiple bearing arguments redundant? Whether it;s relative or absolute, the bearing will always take on the value of the last bearing_argument.)
You can rename `float` and `unsigned_float` as `number` and `nonnegative_number` if you like. I'm not going be precious about any of this; I just can't believe nobody has fixed this in all this time.
If SVG numbers are brought into line with CSS numbers, then fraction changes to:
```
fraction ::= ( digits ( "." digits )? ) | ( "." digits )
```
i.e. drop the first `?`.
I'm not really a grammar geek _\*deletes rant about the grammar using right-recursion over the Kleene star\*_ so it's possible this will produce a horrible parse tree or has transgressed LALR(1) in some way. But it's better than what's there.
--
GitHub Notification of comment by fuchsia
Please view or discuss this issue at https://github.com/w3c/svgwg/issues/335#issuecomment-317863400 using your GitHub account
Received on Tuesday, 25 July 2017 20:32:55 UTC