/u/sy/beebe/tex/ndvi/cxref/CHANGES, Wed Mar 21 15:25:34 1990 Edit by Nelson H.F. Beebe Change Log for Arnold Robbins' cxref Program [23-Mar-1990] Update for full ANSI C support: (1) Add recognition of new ANSI keywords `noalias' and `signed'; the other new ones, `const', `enum', `void', and `volatile', were already supported. (2) Add recognition of hexadecimal escape sequences in character and string constants. (3) Add recognition of integer (l, L, u, U) constant suffixes, and floating (f, F, l, F) suffixes. (4) Add recognition of wide character (L'...') and string (L"...") constants. (5) Add recognition of ANSI trigraphs: 3-character (??x) representations of # [ \ ] ^ { | } ~. Support for the following common C language extensions has also been added: (1) $ in names (VAX and HP/Apollo) (2) IBM PC DOS (Borland Turbo, Lattice, Microsoft, TopSpeed) type modifiers `cdecl', `far', `fortran', `huge', `interrupt', `near', and `pascal'. (3) GNU C (gcc), and a few others, `inline' type modifier. "make docxref" will run a test of the parser using a special file, test.c; the output should be identical to test.ok. [21-Mar-1990] Legal C input like putchar('\"'); confused the scanner. If there was only one such instance, an error message about unexpected EOF was issued. If there were two, then some of the text between was output as a string, and garbage tokens were produced (by lex's automatic echoing of things it doesn't understand). The problem was that the character constant grammar rule pattern in cscan.l did not correctly handle this case. Here are the changes: % diff cscan.l-org cscan.l 94a95 > 97c98 < '\\[\\bfrnlt']' outchar(); --- > '\\[\\abfnrtv"?']' outchar(); Note that \a, \", \v, and \? are now recognized, as per ANSI C. \| is no longer recognized (it has never been a legal C escape).