Are Python's reserved words reserved in places they dont need tobe?

Duncan Booth duncan.booth at invalid.invalid
Wed Sep 13 04:08:52 EDT 2006


"Delaney, Timothy (Tim)" <tdelaney at avaya.com> wrote:

> Antoon Pardon wrote:
> 
>> This is just an idea of mine, nothing I expect python to adapt.
>> But just suppose the language allowed for words in bold. A word
>> in bold would be considered a reserved word, a word in non bold
>> would be an identifier.
> 
> Exactly how am I supposed to use my text editor to make words bold? Is
> every text editor supposed to understand a "python format" for code?

I guess you would do it the same way other languages have implemented this 
in the past: use bold if your editor supports it and use something else if 
it doesn't.

Algol 68 has the concept that keywords and identifiers with the same 
spelling are distinguished in some way (and if I remember correctly there 
were compiler options that let you specify what sort of stropping you were 
using). There was case stropping: case not otherwise being significant you 
could indicate a reserved word by uppercasing it e.g. BEGIN; or various 
punctuation conventions .begin. 'BEGIN' @begin or your editor might 
indicate reserved words using a different font e.g. bold.

I see wikipedia's entry on stropping says that Atlas Autocode let you strop 
keywords by underlining them using backspace and overstrike. That must have 
been real fun to type.

One of the big advantages of stropping is of course that you don't have to 
print or view source code using the same convention as you used when 
entering the text. So you might use case stropping to type your source code 
in, but then print listings with keywords bolded and lowercased.

So for Python you would have a magic comment similar to how you specify 
encoding to specify the type of stropping in use and your editor would 
recognise the comment and display the file using whichever stropping 
convention you prefer for viewing.

Personally I think a simpler idea to get round clashes of reserved words 
and identifiers would be to adopt something similar to c#'s @ escape. You 
could simply allow the lexer to accept @'something' as an alternative 
spelling for the identifier something, but with no restrictions on the 
characters that such an identifier could contain. so for manipulating html 
you would be able to write:

   element.@'class' = "whatever"

instead of having to call setattr or use some other kludge.

If Python did have a mechanism like this to escape identifiers then you 
could implement stropping completely outside the language: you could have 
an editor which displays keywords in one font and identifiers in another 
(as most editors already do), and then when saving simply escape any 
identifiers which are not otherwise valid. It wouldn't even be a big 
change: the editor could probably guess your intent correctly 99% of the 
time.



More information about the Python-list mailing list