[Issue 1466] New: Spec claims maximal munch technique always works: not for "1..3"

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Sep 1 07:35:27 PDT 2007


http://d.puremagic.com/issues/show_bug.cgi?id=1466

           Summary: Spec claims maximal munch technique always works: not
                    for "1..3"
           Product: D
           Version: 1.020
          Platform: All
               URL: http://digitalmars.com/d/1.0/lex.html
        OS/Version: All
            Status: NEW
          Keywords: spec
          Severity: minor
          Priority: P3
         Component: www.digitalmars.com
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: deewiant at gmail.com


A snippet from http://digitalmars.com/d/1.0/lex.html:

"The source text is split into tokens using the maximal munch technique, i.e.,
the lexical analyzer tries to make the longest token it can."

Relevant parts of the grammar:

Token:
        FloatLiteral
        ..

FloatLiteral:
        Float

Float:
        DecimalFloat

DecimalFloat:
        DecimalDigits .
        . Decimal

DecimalDigits:
        DecimalDigit

DecimalDigit:
        NonZeroDigit

Decimal:
        NonZeroDigit

Based on the above, if a lexer encounters "1..3", for instance in a slice:
"foo[1..3]", it should, using the maximal munch technique, make the longest
possible token from "1..3": this is the Float "1.". Next, it should come up
with the Float ".3".

Of course, this isn't currently happening, and would be problematic if it did.
But, according to the grammar, that's what should happen, unless I'm missing
something.

Either some exception needs to be made or remove the "DecimalDigits ."
possibility from the grammar and the compiler.


-- 



More information about the Digitalmars-d-bugs mailing list