- From: James Elmore <James.Elmore@cox.net>
- Date: Fri, 18 Jul 2008 13:57:56 -0700
- To: Simetrical <simetrical@gmail.com>, www-style list <www-style@w3.org>
On Jul 18, 2008, at 11:52 AM, Simetrical wrote: > On Fri, Jul 18, 2008 at 2:41 PM, James Elmore > <James.Elmore@cox.net> wrote: >> By the way, (possibly I missed this) is there a suggestion about >> using the >> variable sigil (interesting word -- I would use indicator) for the >> variable > > I got it from Wikipedia, and I think it's an amusing term, so I'll > go with it. > > http://en.wikipedia.org/wiki/Sigil_(computer_programming) Thanks for the reference. I knew what it meant, but could not remember having seen it used before. > >> Would it make CSS parsing easier if every use of the variable (LHS >> and RHS; >> setting and getting) required a sigil? Or would that make things more >> complex, because then idiots could do things like: >> >> <style> >> declare { $color: #00ff00; } >> h1 { color: $color; } >> </style> > > If some kind of sigil is used, there's no reason to prevent keywords > from being used in variable names. Agree, but would wish it were not so because of prior experience with overlapping names in programming languages which allow that sort of thing. It just makes reading the code harder. > The sigil will effectively > distinguish variables from keywords. For comparison, other > implementations I'm aware of (PHP and bash, mainly) reserve no > variable names -- $function, $while, and so on are perfectly valid. > (Both do predefine certain variables before the program begins > executing, but those variables can generally be changed like any > other.) > > With the huge number of keywords CSS uses, it seems like a good idea > to avoid conflicts, as I remarked previously. In some contexts, > $color would be a very reasonable choice for a variable name. I don't > think you'd have to be an idiot at all. Sorry for the poor example. My point was that using identical (except for a sigil, possibly) names lead to mental overlap and will eventually cause problems, based on my experiences. Perhaps others are smarter and can avoid these problems, but I find they almost always pop up. <style> declare { $font: Times, New Times, serif; } p { font: $font 12px blue; } </style> Maybe that points out the confusion better than 'color'. At any rate, overloading (the psychological term) causes mental fatigue and, if enough people are involved will trip someone up and cause problems which are harder to find than they need to be. I just prefer (personal preference, based on experiences I have no wish to repeat) that keywords be excluded. > > As for whether to use the sigil in the declarations as well, I don't > think there would be any difference in terms of parsing it, in the > syntaxes that have been contemplated so far. I think it's more > intuitive to use the same name in declaration and use, not require an > extra character for one but not the other. Some languages I have used have gone one way, some the other. For the earliest systems I know, the preference was avoiding typing, so the extra character (sigil) was excluded from the declaration and only used when the variable was referenced. In some later languages, the preference was reversed (maybe the programmers could type faster?) so that every invocation of the variable (including declarations) was identical. In terms of parsing, if the sigil is not present, then standard CSS syntax would declare the use of keywords invalid, otherwise a declaration might just be a CSS selector with a selector for an element of type 'declare' (Inventing on the fly: <quote> <author>Patrick Henry</ author><declare>Give me liberty or give me death!</declare></quote>) <style> declare {color: red;} em { color: $color; } </style> That would fail, because $color was not declared. (The "declare { ... }" would be interpreted as a standard syntax unless the parser was carefully made to handle this exception. In that case, the parser would need something like @declare to recognize a variable. If keywords were excluded, the parser might be able to tell the difference and avoid the extra characters (@ and $). I guess, looking back, that I am over-thinking this. Surely some of you with CSS parser experience can tell me which syntax makes the most sense. </James>
Received on Friday, 18 July 2008 21:02:49 UTC