2019-04-27 Matt Wette * 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 * 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 * 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 * 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 * 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 * 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 * 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 * cxeval.scm (eval-sizeof-expr): updated for (string "abc" "def") 2018-11-21 Matt Wette * mach.scm (c99-spec): knr was restored and then removed; __attributes__ will appear in decl-spec-list now 2018-11-17 Matt Wette * 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 * mach.scm (c99-spec): major changes to organization of declarations in order to deal with wide usage of __attribute__ 2018-11-11 Matt Wette * 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 * pprint.scm (pretty-print-c99): If comments look like they were generated with `//' then use that. 2018-10-22 Matt Wette * cxeval.scm (eval-sizeof-type): was returning #t, should return the integer size; still needs work on random typedefs 2018-10-12 Matt Wette * 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 * util1.scm (get-gcc-cpp-defs): removed dependence on regex 2018-04-05 Matt Wette * 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 * 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 * ../../../../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 * pprint.scm (pretty-print-c99): added initializer and initializer-list, and removed (comp declr initr) 2017-12-13 Matt Wette * 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 * munge.scm: note: at some point in the past changed util2.scm to munge.scm 2017-11-18 Matt Wette * 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 * pprint.scm (pretty-print-c99): added case for wide char types 2017-11-13 Matt Wette * mach.scm (c99-spec): added lone `;' in structs and unions (struct-declaration-list production) 2017-11-11 Matt Wette * 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 * pprint.scm (pretty-print-c99): added enum-ref 2017-09-04 Matt Wette * util2.scm (expand-specl-typerefs): fixed c99-06 test 1: was => int (*baz)(..., now => int *(*bar)(... 2017-08-31 Matt Wette * 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 * mach.scm (c99-spec): add GNU compound statement in paren's as expr 2017-08-01 Matt Wette * 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 * 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 * 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 * mach.scm (c99-spec): change declr-fctn to abs-fctn-decl; declr-fctn-anon to anon-fctn-declr 2017-07-15 Matt Wette * mach.scm (c99-spec): for type-qualifier-list return type-qual-list (was decl-spec-list) 2017-07-08 Matt Wette * util2.scm (munge-decl): If arg is already udecl just return it. 2017-07-07 Matt Wette * util2.scm (canize-enum-def-list): fixed so enums start at 0, was 1 2017-07-01 Matt Wette * mach.scm (c99-spec): added GNU-C asm extension 2017-06-30 Matt Wette * body.scm (gen-c-lexer): handle #define FOO "foo.h" #include FOO 2017-06-29 Matt Wette * 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 * util2.scm (clean-field-list): fixed bug that would add comments when there were none at all 2017-06-16 Matt Wette * util2.scm (munge-decl): changed (decl to (udecl 2017-06-15 Matt Wette * 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 * util2.scm (c99-trans-unit->udict): if include was not getting the include's trans-unit 2017-06-03 Matt Wette * 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 * pprint.scm (pretty-print-c99): removed double spacing in printed declarations 2017-03-11 Matt Wette * parser.scm (parse-c99): added mode keyword argument to gen-c-lexer, file mode would not have been working ... 2017-02-28 Matt Wette * pprint.scm: (binary 'd-del .. => (binary 'd-sel 2017-02-22 Matt Wette * 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 * cpp.scm (rtokl->string): now handled symb ## arg ## symb (scan-cpp-input): skip-il-ws after #\( 2017-01-18 Matt Wette * 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 * 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 mising unquote in output sx for goto: `(goto $2) => `(goto ,$2) 2017-01-06 Matt Wette * parser.scm: default parser #:mode is now 'code; done since the CPP should now be working (??) 2017-01-02 Matt Wette * 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 * 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.