Commit graph

581 commits

Author SHA1 Message Date
Jan Nieuwenhuizen d039b00349 mescc: Fix for character array s[0].
* module/language/c99/compiler.mes (expr->arg, expr->accu, ast->info):
  Use type size to calculate index.
* doc/examples/t.c: Test it.
* doc/examples/mini-mes.c (cstring_to_list): Simplify.
2017-03-13 19:38:38 +01:00
Jan Nieuwenhuizen 03c37b2e22 mescc: Support mini-mes running scheme program with builtins.
Mini-mes, compiled with either gcc or mescc, now runs a memory dump of
this mini-0.mes program

	(begin
	  (write-byte (make-cell 0 0 65))
	  (write-byte (make-cell 0 0 66))
          (write-byte (make-cell 0 0 67))
 	  (write-byte (make-cell 0 0 10))
	  #f)

when read and dumped by (gcc-compiled) mes-32.

* build-aux/mes-snarf.scm: FIXES ..collapse?
* module/language/c99/compiler.mes (ast->info): Bail out on unhandled
  declarations.  Was: verbosely skip.
2017-03-12 12:02:12 +01:00
Jan Nieuwenhuizen 1322d99c22 mescc: Support [for] itoa.
* module/mes/libc-i386.mes (i386:accu%base): New function.
* module/mes/libc-i386.scm: Export it.
* module/language/c99/compiler.mes (expr->accu): Use it to support mod.
* doc/examples/t.c (itoa): New function.
  (test): Test it.
* doc/examples/mini-mes.c (itoa)[!__GNUC__]: New function.
2017-03-12 11:05:20 +01:00
Jan Nieuwenhuizen 3268027e46 mescc: Support do .. while.
* module/language/c99/compiler.mes (ast->info): Support do-while.
* doc/examples/t.c (test): Test it.
2017-03-12 11:05:00 +01:00
Jan Nieuwenhuizen 76f1a89cef core+mini-mes: Replace manual snippets by snarfed includes.
* build-aux/mes-snarf.scm (symbol->source, function->header,
  function->source, function->environment): Add workarounds to
  avoid struct-copy initializers.
* GNUmakefile (mini-mes): Snarf symbols and functions.
* scaffold/mini-mes.c: Include mini-mes.h, mini-mes.symbols.h,
  mini-mes.symbols.i, mini-mes.i, mini-mes.environment.i.
  Add snarfable symbol/special definitions.
  (type_t): Prefix all types with `T', update users.
  (assert_defined, gc_push_frame, gc_peek_frame, gc_init_cells): Mark
  as internal.
* mes.c (type_t): Prefix all types with `T', update users.
* scaffold/mini-mes.c (eq_p, type_, car_, cdr_,
  list_of_char_equal_p, lookup_macro, write_byte): New functions (from
  mes.c).
  (assq): Add debugging, workaround.
2017-03-10 20:56:18 +01:00
Matt Wette b43380c8d8 nyacc: removed start from lalr-spec -- not needed 2017-03-05 13:22:51 -08:00
Matt Wette 2f1e0e6360 nyacc: working javascript interpreter in guile 2017-03-03 17:07:29 -08:00
Matt Wette 07310be6d0 nyacc: lex fixes for char-lit 2017-03-02 16:23:44 -08:00
Matt Wette 9c4e5247c2 nyacc: cleaned up documentation 2017-03-01 18:11:40 -08:00
Matt Wette be4d33f022 nyacc: working on C99 UG as a memo 2017-02-28 17:19:48 -08:00
Matt Wette 6c536c0e9d nyacc: new release 0.76.5 2017-02-28 09:57:49 -08:00
Matt Wette 953a57b663 nyacc: fixed bug in pretty-print-c99 wrt i-sel 2017-02-28 09:53:41 -08:00
Matt Wette f7ab751dcd nyacc: merge from 0.76.4 2017-02-25 07:36:57 -08:00
Matt Wette 72b0dbe2bd nyacc: new release 0.76.4 2017-02-23 17:31:24 -08:00
Matt Wette 14d6407bc9 nyacc: new release 0.76.3 2017-02-23 05:38:49 -08:00
Matt Wette e00dc59ac0 nyacc: more bugs in cpp tokl->string 2017-02-23 05:37:25 -08:00
Matt Wette 7bb78f15b8 nyacc: new release 0.76.2 2017-02-22 17:14:07 -08:00
Matt Wette 8580e706f8 nyacc: fixed more CPP issues 2017-02-22 17:12:32 -08:00
Matt Wette f7fb6ac395 nyacc: new release 0.76.1 2017-02-22 08:26:40 -08:00
Matt Wette 2c6a6dc47d nyacc: fixed C99 CPP to deal with numbers correctly 2017-02-22 08:23:27 -08:00
Matt Wette 62154122b3 nyacc: merge master 0.76.0 2017-02-20 13:45:45 -08:00
Matt Wette 34c0f46c62 nyacc: new release 0.76.0 2017-02-19 08:28:25 -08:00
Matt Wette a301ce53df nyacc: worked c99/util2.scm udecl->mspec 2017-02-19 08:26:30 -08:00
Matt Wette 047590bd5e nyacc: new release 0.75.6 2017-02-18 17:11:12 -08:00
Matt Wette bed639f680 nyacc: fixed some c99/util2 items 2017-02-18 17:06:50 -08:00
Matt Wette 5bf49dfb54 nyacc: merged in 0.75.5 from master and inc version 2017-02-17 10:21:52 -08:00
Matt Wette 9559240282 nyacc: new release 0.75.5 2017-02-17 08:30:20 -08:00
Matt Wette 883a93ce60 nyacc: new release 0.74.4 2017-02-16 16:14:42 -08:00
Matt Wette f831edafe9 nyacc: minor cpp fixes 2017-02-16 16:12:40 -08:00
Matt Wette 5b34d2b2e7 nyacc: merge from 0.75.3 2017-02-16 11:03:11 -08:00
Matt Wette 16bf996c93 nyacc: new release 0.75.3 2017-02-16 06:26:10 -08:00
Matt Wette 2d35221753 nyacc: new release 0.75.2 2017-02-16 06:24:56 -08:00
Matt Wette 49a7200b72 nyacc: new release 0.75.1 2017-02-16 06:12:32 -08:00
Matt Wette 2b57b3dc6e nyacc: new release 0.74.0 2017-02-15 20:49:07 -08:00
Matt Wette 1ae749b25f nyacc: I think cpp is working now 2017-02-15 19:58:29 -08:00
Matt Wette 5baa7f33b1 nyacc: working cpp now, I hope 2017-02-14 19:24:59 -08:00
Matt Wette 8a821d03d6 nyacc: CPP not yet working for file mode 2017-02-12 14:29:18 -08:00
Matt Wette ea7f0b3a01 nyacc: working on cpp issues 2017-02-11 13:04:38 -08:00
Matt Wette d03ea06c84 nyacc: C99 CPP for code is better 2017-02-05 07:52:44 -08:00
Matt Wette e534225328 nyacc: starting to work on reframing 2017-01-20 14:51:55 -08:00
Matt Wette 85cb3731cc nyacc: more CPP fixes 2017-01-18 17:26:41 -08:00
Matt Wette 50fc6f6966 nyacc: redesign lang/c99/cppbocy.scm:scan-cpp-input 2017-01-17 05:50:45 -08:00
Jan Nieuwenhuizen f738d4381d mescc: Support goto in while body.
* module/language/c99/compiler.mes (ast->info): Support goto in while
  body.
* doc/examples/t.c (test): Test it.
2017-03-10 07:01:51 +01:00
Jan Nieuwenhuizen f612feec47 core+mini-mes: Move function name to struct function.
* module/language/c99/compiler.mes (expr->arg): Handle char arguments.
* doc/examples/cons-mes.c (struct function): Add name field.
* doc/examples/mini-mes.c: Likewise.
  (mes_builtins): Update.
* mes.c: Likewise.
* build-aux/mes-snarf.scm: Update.
2017-03-09 23:27:12 +01:00
Jan Nieuwenhuizen e9560e95a5 mescc: Support strings in struct initialization.
* module/mes/elf-util.mes (add-s:-prefix, drop-s:-prefix): New functions.
* module/mes/elf-util.scm: Export them.
* module/language/c99/compiler.mes (string->global): Add `s:' prefix
  to global strings.  Update users.
  (expr->arg): Update.
  (expr->accu): Handle string expressions.
  (initzer->global): New function.
  (struct-field): Handle string field.
* doc/examples/t.c: Test it.
* doc/examples/mini-mes.c: Use it.

dun!
2017-03-09 08:14:27 +01:00
Jan Nieuwenhuizen 64e73dcf29 mescc: Display sexps better.
* module/mes/elf.mes (make-elf): Only display data sections smaller
  than 200 bytes.
* doc/examples/mini-mes.c (simple_bload_env): Read mini-0-32.mes.
* doc/examples/cons-mes.c (display_): Support symbols and specials.
* doc/examples/tiny-mes.c: Likewise.
* lib.c:
* mes.c:
2017-03-07 22:33:59 +01:00
Jan Nieuwenhuizen dd52f580fb mescc: Compile all of mini-mes.
* module/language/c99/compiler.mes (case->jump-info): Support single statement.
* module/mes/elf-util.mes (function-prefix): Workaround for reversed
  functions.  FIXME!
* module/mes/elf.mes:
* scaffold/mini-mes.c (type_t): Rename FUNCTION to TFUNCTION for Nyacc.
  Add missing symbols.
  (eval_apply): Uncomment most.
* scaffold/tiny-mes.c:
* scaffold/cons-mes.c: Remove cruft.
2017-03-06 07:14:15 +01:00
Jan Nieuwenhuizen 78e70f9024 mescc: Support struct assignment.
* module/mes/libc-i386.mes (i386:base-address->accu-address,
  i386:accu+n, i386:base+n): New functions.
* module/mes/libc-i386.scm: Export them.
* module/language/c99/compiler.mes (ast->info): Use them.
* doc/examples/t.c: Test them.
* doc/examples/cons-mes.c: Drop workarounds.
* doc/examples/mini-mes.c: Likewise.
* mes.c:
2017-03-02 20:26:13 +01:00
Jan Nieuwenhuizen 08ea0da745 mescc: Fix add, sub, lshift.
* module/language/c99/compiler.mes (expr->accu): Fix add, sub, lshift.
* doc/examples/t.c: Test them.
* doc/examples/cons-mes.c:
* doc/examples/mini-mes.c:
2017-03-02 20:19:53 +01:00
Jan Nieuwenhuizen c9b251616a mescc: Support any expression as arg.
* module/language/c99/compiler.mes (expr->arg): Also push parameter,
  always return info.
  (ast->info): Loop over args.  Fixes using function calls in arguments.
* module/mes/libc-i386.mes (i386:push-arg): Remove.
  (i386:call, i386:call-accu): Remove arguments parameter.
* doc/examples/t.c: Test it.
2017-02-27 07:50:33 +01:00