- BASIC (and TI-BASIC!)
- 4dos .BTM batch files
You know, the usage of "else if" is not a sign of "sane" language. C doesn't implement "else if" construct, it only implements "else" construct with no required boundary markers, as you said (no, I'm not blind, although I might seem to be). This may be a Bad Thing (tm). If there are no visible boundary markers, compiler will have to use less visible boundary markers, or guess what user meant. In C(++) this means that else will include next single statement as a block. Can you even begin to imagine how many bugs this has caused (by unenlightened programmers who don't use autoindenting editors)? There is a reason perl requires braces around every construct (which is the reason perl needs specific "elsif" construct).
I'm no big fan of GNU Coding Standards, but sometimes, just sometimes, they do make sense:
else if (c)
Right? No! If you used autoindenting editor, or more importantly, sensible programming language, you'd see it's really this:
else if (c)
do_no_a(); // do_a_no_b_or_c()
Now, I don't know how other languages you mentioned (pascal, csh, tcsh) deal with it; but I can only shudder as I imagine it. Either they do as C does, that is, guess the range, usually including next statement, line et cetera, or make construct "else if" that looks like two separate identifiers, "else" and "if", really be one construct, which could get pretty confusing (and potentially dangerous).