Turtle and decimals

The grammar rule for DECIMAL is

[21] DECIMAL ::= (([+-])? ([0-9])+ '.' ([0-9])+) | ('.' ([0-9])+)
                  ^                             ^

which seems to have brackets in the wrong place.
It puts +/- only on the first form.

Rewritten with whitespace:

(([+-])? ([0-9])+ '.' ([0-9])+)
|
('.' ([0-9])+)

so .3 is legal but +.3 isn't.

Should that be:

([+-])?
    ( ( ([0-9])+ '.' ([0-9])+ )
      |
      ('.' ([0-9])+)
    )

ie.

([+-])? ( ( ([0-9])+ '.' ([0-9])+ ) | ('.' ([0-9])+) )
           ^1                      ^1
         ^2                                           ^2

simpler is

([+-])?  ( ([0-9])* '.' ([0-9])+  )

(this respects ISSUE-18).

- - - -
[22] DOUBLE ::= (([+-])? ([0-9])+ '.' ([0-9])+ EXPONENT) | ('.' ([0-9])+ 
EXPONENT) | (([0-9])+ EXPONENT)

(([+-])? ([0-9])+ '.' ([0-9])+ EXPONENT) | ....
^                                      ^

suffers a similar problem.

Should be:

([+-])? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ 
EXPONENT )

 Andy

PS

.3 is illegal in N3 as is +.3 and -.3
N3 requires a digit before the dot.
Except it does not require the dot in the EBNF:

N3 grammar:
[-+]?[0-9]+\\.[0-9]*
or EBNF:
decimal ::= [-+]?[0-9]+(\.[0-9]+)?

which are different and the latter reflects the old decimal/integer 
issue in turtle and N3

Received on Tuesday, 12 June 2012 18:59:40 UTC