Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!munnari.oz.au!goanna!ok From: ok@goanna.oz.au (Richard O'keefe) Newsgroups: comp.lang.eiffel Subject: Re: Comments on proposed Eiffel language changes Message-ID: <2888@goanna.oz.au> Date: 20 Feb 90 07:34:10 GMT References: <48a55876.12c9a@digital.sps.mot.com> Organization: Comp Sci, RMIT, Melbourne, Australia Lines: 35 In article <48a55876.12c9a@digital.sps.mot.com>, shelley@atc.sps.mot.com (Norman K. Shelley) writes: > Page 240 of "Eiffel: The Language" states that "internal upper-case letters ... > as in putAtRight, contradicts the standard conventions of English ... > and is not part of the recommended style." I agree BUT must note that the > underscore ('_') > as a word separator is NOT English either. A whitespace is the accepted > standard but computers have troubles with whitespace in names/labels so what do > we do? This is contrary to fact. Computers have no trouble whatsoever with layout inside names. Consider Fortran, Algol 68, and IMP for starters. I also have a modified Prolog which allows layout inside names as well, where I adopted the rule that 1 or more layout characters inside an identifier were equivalent to a single underscore, so that translation of identifier(New Style Identifier, Old Style Id) was read the way that translation_of_identifier(New_Style_Identifier, Old_Style_Id) is read in normal Prolog syntax, so this could coexist with a standard tokeniser/parser. The only thing that tokenisers have trouble with is telling where one identifier ends and another begins. There are several ways around this. One of them is to use a syntax where the issue just doesn't arise. For example, require latest x = old y; would cause a problem, but if it were require (latest x = old(y)); so that identifier never met identifier, the problem would go away. Another is to use a form of stropping; there were four official methods of stropping for Algol 68 and IMP used another, e.g. %require latest x = %old y; I _don't_ agree that the Eiffel lexical rules for identifiers warrant changing, but let's but delude ourselves, the only reason for not allowing spaces in identifiers is the language designer's careful choice.