2019-04-27  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (cpp-define): Now accommodates comments in CPP like
	this: #define /* MAX as macro */ MAX(X,Y) (((X)>(Y))?(X):(Y))
	support item 109657

2019-03-24  Matt Wette  <mwette@alumni.caltech.edu>

	* ffi-help.scm (cnvt-udecl): fixed error in "typedef union foo
	foo_t;" by adding (fhscm-def-compound typename).  The desc was
	being defined but not the type.  This was causing (make-foo_t)
	return a void.  Same issue for "typedef struct foo foo_t".

2019-02-05  Matt Wette  <mwette@alumni.caltech.edu>

	* ffi-help.scm (gen-lookup-proc): in-line open "/dev/null" was
	generating "too many open files".  Replaced with open/close in
	gen-lookup-proc and added try-parse-repl

2019-01-18  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.d: changed convention from xxxact.scm, xxxtab.scm to
	xxx-act.scm, xxx-tab.scm; added xxx-xtr.scm which has extra
	table to help with debugging output

2019-01-02  Matt Wette  <mwette@alumni.caltech.edu>

	* parser.scm: now using c99-def-help from c99/util.scm for default
	inc-help ; adding this to ffi-help and others

2018-12-31  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): add attribute on declarators in structs;
	had to add specifier-qualifier-list/no-attr to use for type-name
	production to remove loop-conflict

2018-12-30  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (make-c99-lexer-generator): pass pragma always, if
	file mode, then as cpp-stmt, else pass as (pragma "opt-args")

2018-12-28  Matt Wette  <mwette@alumni.caltech.edu>

	* cxeval.scm (eval-sizeof-expr): updated for (string "abc" "def")

2018-11-21  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): knr was restored and then removed;
	__attributes__ will appear in decl-spec-list now

2018-11-17  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): remove K&R function definition for now: it
	generates a parser that does not work with attribute-specifiers

2018-11-16  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): major changes to organization of
	declarations in order to deal with wide usage of __attribute__

2018-11-11  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): in attribute-expr replace ($string)
	with (string-literal); problem was G_GNUC_DEPRECATED macro in
	glib/gmacros.h

	* body.scm (make-c99-lexer-generator): changed cpi-push,shift,pop
	to cpi-push-x,shift-x,pop-x; added cpi-push, cpi-pop and calls to
	properly scope typedefs; needed to deal with local typedefs in glib.h

2018-10-30  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm (pretty-print-c99): If comments look like they were
	generated with `//' then use that.

2018-10-22  Matt Wette  <mwette@alumni.caltech.edu>

	* cxeval.scm (eval-sizeof-type): was returning #t, should return
	the integer size; still needs work on random typedefs

2018-10-12  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (rtokl->string): handle comments from scan-cpp-input
	(scan-cpp-input): add keyword arg to pass through comments, and
	now comments are not necessarily ignored

2018-09-05  Matt Wette  <mwette@alumni.caltech.edu>

	* util1.scm (get-gcc-cpp-defs): removed dependence on regex

2018-04-05  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): Committed major surgery to add handling of
	attribute specifiers to be returned as attributes like
	(@ ("packed" "") ("aligned" "(__alignof__(long long))"))

2018-03-10  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): Worked on x-def usage.  I'm still unsure
	if read-c-ident logic is all correct.

2018-02-19  Matt Wette  <mwette@alumni.caltech.edu>

	* ../../../../examples/nyacc/lang/c99/ffi-help.scm
	(mtail->bs-desc): bug in (pointer-to typename) to (assoc-ref map
	name) from (assoc-ref name map)

2017-12-23  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm (pretty-print-c99): added initializer and
	initializer-list, and removed (comp declr initr)

2017-12-13  Matt Wette  <mwette@alumni.caltech.edu>

	* util1.scm (get-gcc-inc-dirs): update to use -Wp,-v.  Note this
	may break because it uses "2>&1" to get stderr.  check w/ csh
	please -- works for me

2017-12-10  Matt Wette  <mwette@alumni.caltech.edu>

	* munge.scm: note: at some point in the past changed util2.scm to
	munge.scm

2017-11-18  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (read-rest): new procedure to replace get-string-all
	from (ice-9 textual-ports); remove use-module (ice-9 textual-ports)

2017-11-15  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm (pretty-print-c99): added case for wide char types

2017-11-13  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): added lone `;' in structs and unions
	(struct-declaration-list production)

2017-11-11  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): Since include files now have <> or "" I
	need to strip them off before looking through the helper list.

	* cpp.scm (expand-cpp-macro-ref): Fixed, once again, the def-bwl.c
	bug reported by Jan N:
	was:
	  (or (expand-cpp-macro-ref repl defs (cons repl used)) repl)
	is:
	  (or (expand-cpp-macro-ref repl defs used) repl)

2017-09-20  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm (pretty-print-c99): added enum-ref

2017-09-04  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (expand-specl-typerefs): fixed c99-06 test 1:
	was => int (*baz)(..., now => int *(*bar)(...

2017-08-31  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (cpp-define): major bug: was using drain-input when I
	should be using get-string-all, same for cpp-line->stmt

2017-08-04  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): add GNU compound statement in paren's as expr

2017-08-01  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (eval-cpp-expr): If tree is (char x) then we need to
	apply string-ref to get argument for char->integer.
	(rtokl->string): ugh. when CPP builds strings we need to escape
	characters to reassemble.  Not sure I have done it all here.
	Needs more testing.

	* util2.scm (canize-enum-def-list): enum values more robust:
	was (p-expr (fixed "1")) or (neg (p-expr (fixed "1"))) only.

	* body.scm (gen-c-lexer): added support for CPP #warning
	(find-file-in-dirl): added logic to look in current directory
	first, if header.

2017-07-28  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (collect-args): when moving from iter1 to iter2 was
	neglecting to unread-char the character carried from iter1.  Fix
	based on bug report from janneke.  Thanks again, Jan.

2017-07-28  Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): bug report by janneke.
	`#undef NAME' not working; was using delete, now acons #f

	* mach.scm (c99-spec): bug report by janneke.
	ident-like returns (ident ("foo")) instead of (ident "foo");
	fixed w/ (car $1) => (sx-ref $1 1)

2017-07-16  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): change declr-fctn to abs-fctn-decl;
	declr-fctn-anon to anon-fctn-declr

2017-07-15  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): for type-qualifier-list return
	type-qual-list (was decl-spec-list)

2017-07-08  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (munge-decl): If arg is already udecl just return it.

2017-07-07  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (canize-enum-def-list): fixed so enums start at 0, was 1

2017-07-01  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): added GNU-C asm extension

2017-06-30  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): handle #define FOO "foo.h" #include FOO

2017-06-29  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (eval-cpp-expr): cleaned up bitwise-or,xor,and
	(cpp-include): only handled args w/ " or <, now c-ident also

2017-06-17  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (clean-field-list): fixed bug that would add comments
	when there were none at all

2017-06-16  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (munge-decl): changed (decl to (udecl

2017-06-15  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (c99-trans-unit->udict): changed to fold-right
	(canize-enum-def-list): now working for negative enum vals

2017-06-11  Matt Wette  <mwette@alumni.caltech.edu>

	* util2.scm (c99-trans-unit->udict): if include was not
	getting the include's trans-unit

2017-06-03  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): fixed cpp expansion to allow
	re-expansion when replacement is ident-like.  This allows
	  #define ABC(X,Y) ((X)+(Y))
	  #define DEF ABC
	  int main { int x = DEF(1,2); }
	reference: janneke bug report on def-bwl.c

2017-05-04  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm (pretty-print-c99): removed double spacing
	in printed declarations

2017-03-11  Matt Wette  <mwette@alumni.caltech.edu>

	* parser.scm (parse-c99): added mode keyword argument to
	gen-c-lexer, file mode would not have been working ...

2017-02-28  Matt Wette  <mwette@alumni.caltech.edu>

	* pprint.scm: (binary 'd-del .. => (binary 'd-sel

2017-02-22  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (rtokl->string): added handler for 'string

	* body.scm: added 'skip state so that if skipping #if
	then no CPP if or elif arguments are evaluated

	* cpp.scm: parse 0L numbers, convert c numbers (e.g.,
	123L) to scheme so that string->number works.  I need to update
	cnumstr->snumstr in nyacc/lex.scm.

2017-02-16  Matt Wette  <mwette@alumni.caltech.edu>

	* cpp.scm (rtokl->string): now handled symb ## arg ## symb
	(scan-cpp-input): skip-il-ws after #\(

2017-01-18  Matt Wette  <mwette@alumni.caltech.edu>

	* parser.scm: check for EOF in end of CPP line

	* mach.scm (c99-spec): decl for translation unit was
	updated to allow programs with no declarations or statements

2017-01-07  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (read-cpp-line): cpp statement should not
	include newline?  Changed to unread final newline.

	* mach.scm (c99-spec): from
        2017-01-07 Jan Nieuwenhuizen  <janneke@gnu.org>
	mising unquote in output sx for goto: `(goto $2) => `(goto ,$2)

2017-01-06  Matt Wette  <mwette@alumni.caltech.edu>

	* parser.scm: default parser #:mode is now 'code; done
	since the CPP should now be working (??)

2017-01-02  Matt Wette  <mwette@alumni.caltech.edu>

	* mach.scm (c99-spec): added hooks (cpp-ok!, no-cpp!) to
	provide handshaking between parser and lexer wrt when the lexer
	can pass CPP statements to the parser

	* cppbody.scm (expand-cpp-mref): skip ws between ident
	and left paren

2017-01-01  Matt Wette  <mwette@alumni.caltech.edu>

	* body.scm (gen-c-lexer): in code mode now expands includes

	* pprint.scm (pretty-print-c99): added enum-dev w/o name


Copyright (C) 2017 Matthew R. Wette

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.

