Interesting user mistake
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Fri Sep 4 07:36:56 PDT 2015
On Friday, 4 September 2015 at 14:14:43 UTC, Mike James wrote:
> On Friday, 4 September 2015 at 14:05:09 UTC, Jonathan M Davis
> wrote:
>> On Friday, 4 September 2015 at 13:55:03 UTC, Jonathan M Davis
>> wrote:
>>>> [...]
>> [snip]
>>
>> [...]
>
> Isn't it called Maximal Munch...
>
> https://en.wikipedia.org/wiki/Maximal_munch
>
> Regards, -<mike>-
Yes. That's how most languages typically parse tokens, but some
programming languages are more willing to force formatting on you
than others, even if they use maximal munch. You _can_ choose to
make certain uses of whitespace illegal while still using maximal
munch, since all that maximal munch is doing is deciding how
you're going to know whether a sequence of characters is one
token or several when it's ambiguous. It's why vector<pair<int,
int>> has resulted in the C++98 parsers thinking that the >> on
the end is a shift operator rather than the closing halves of the
two templates, and C++11, Java, and C# have all had to _not_ use
maximal munch in that particular case to make it so that it's not
treated as the shift-operator. It makes their grammars that much
less context-free and is part of why D uses !() for template
instantiations.
In any case, I didn't use the term maximal munch, because that
indicates how tokens are separated and says nothing about how you
format your code (aside from the fact that you sometimes have to
add whitespace to disambiguate if the grammar isn't clean
enough), whereas this discussion really has to do with making
formatting your code in a particular instance illegal (or at
least that the compiler would warn about it, which is essentially
equivalent to making it illegal, since no one should leave
warnings in their code, and -w literally turns all warnings into
errors anyway). There is no ambiguity as to whether =+ is the
same as = + as far as the compiler is concerned, because there is
no =+ token, and so maximal munch doesn't really even come into
play here.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list