From mboxrd@z Thu Jan 1 00:00:00 1970 From: Craig Burley To: law@cygnus.com Cc: martynas@nm3.ktu.lt, alan@spri.levels.unisa.edu.au, gcc2@cygnus.com, egcs@cygnus.com, gas2@cygnus.com Subject: Re: ASM_COMMENT_START and gas divide operator Date: Thu, 14 May 1998 10:17:00 -0000 Message-id: <199805141715.NAA21358@melange.gnu.org> References: <6525.895163640@hurl.cygnus.com> X-SW-Source: 1998/msg00184.html >Actually I would recommend against that -- I've had the pleasure of >writing a gas port (HPPA) where certain characters had different >meanings depending on their exact placement in a line. To this day >it still doesn't work 100% correctly -- the grammar is inherently >ambigious. In my case the character is a '!', and is used in >comparison operations, as a gas built-in operator *and* as a line >continuation character. Oh, that's easy to handle. It's a built-in operator if it isn't the first character in the line, otherwise it's a line-continuation character if the line being continued would be syntactically and semantically correct, also produced faster code, than if it was interpreted as a line-comment character, otherwise it's a line- comment character. Yes, I'm being sarcastic. Especially regarding HPPA assembler syntax as provided by HP, which was designed by someone who should not have been let near a language-design project like that, too often "little languages", whether assemblers, tools, or C++, are designed by people who are unaware of, or give little thought to, the outright readability of code written in the language, in the sense that the basic semantics should be fairly obvious *without* the reader having to memorize lots of semantic information. (In HPPA assembler's case, one glaring stupidity was the nullified branches, which have completely different semantics depending on whether the label being branched to happens to assemble to a negative or positive offset! A smarter design would have required the programmer to specify whether such a branch was a "forward" or "backward" branch explicitly, then the assembler and/or linker would complain if reality didn't match the programmer's specification. I've never looked into whether GNU's HPPA as fixes this botch; I gather GNU as fixes many botches, though, so it wouldn't surprise me if it did, even though that might make for some compatibility problems with existing HP as code.) As far as characters meaning something special only when they're in column 1: sometimes that's barely reasonable (C's "#" directives, excluding #pragma), but most often it really just makes the little language look more like the bad old days of Fortran, in the sense that even *Fortran* no longer has such a weird syntax in its modern incarnation (Fortran 90's "free" format). tq vm, (burley)