in reply to Re: Syntax Highlighting Editors Beware
in thread Syntax Highlighting Editors Beware

$one-two vs. $one-$two? or $one-5? I don't have vim, but does it know identifiers only have $ (or @ or %) at the beginning or does it just have $, @ and % in the class of characters allowed in an identifier? And in the last example, digits are in the group, dash was just added ... so it's all one identifier, right?

IMHO, it's a bad idea to allow those two, but that's just me.

Replies are listed 'Best First'.
Re^3: Syntax Highlighting Editors Beware
by John M. Dlugosz (Monsignor) on Aug 10, 2008 at 04:30 UTC
    The - has to be followed by another letter, so $one-$two is not affected. Likewise $one-5 since 5 is not a letter.

    —John

      Exactly. So adding the dash into the class of characters allowed in identifiers would not work since the digits are in the class as well. So the $one-5 would definitely be colored wrong.

      On the other hand ... I think it's a bad change. In Perl 5 "$three = $one-two;" means "subtract the return value of two() from the value in $one and assign to $three". I bet everyone comming from Perl 5 will expect exactly that in Perl6. And I don't know of any language that would allow dashes in identifiers so I bet others will expect something like that as well. And I do not see any reason whatsoever to allow the dashes in Perl.

        Hopefully people coming from Perl 5 will be using syntax-highlighting editors, so they will be able to see at a glance what is and isn't an identifier. :)

        As for languages that allow dashes in identifiers, what about LISP, Scheme, etc? And languages like ML allow single quotes in identifiers (without even the requirement that they be followed by a letter).

        So the rule for recognizing identifiers needs to be changed, not just the class of certain characters.

        I don't know what the motivation was. Contrast with my own proposal concerning identifier names, which is to allow the ® character but only for use by the implementation, to make names that don't clash with the user's program. It's not used for anything else, so doesn't not hurt the parser. Whether implementations do that or not, it's great for documenting the semantics.

        —John