Commit Graph

804 Commits

Author SHA1 Message Date
Yuichi Nishiwaki 0af0ecafb6 add standard io ports 2014-01-12 23:57:50 +09:00
Yuichi Nishiwaki f4202a7555 don't need to strip syntactic information away from quoted expressions 2014-01-12 20:21:07 +09:00
Yuichi Nishiwaki b70c689b1f keep track of xhash's HEAD 2014-01-12 19:53:20 +09:00
Yuichi Nishiwaki a6fafd6422 add missing 'static' modifier 2014-01-12 16:15:04 +09:00
Yuichi Nishiwaki d6abb5c0ba add defvar 2014-01-12 16:09:27 +09:00
Yuichi Nishiwaki 10e5546a53 functions defined by pic_defun will be implicitly renamed 2014-01-12 16:09:19 +09:00
Yuichi Nishiwaki 11ead27614 wrapper/unwrapper for var-proc conversion 2014-01-12 16:08:27 +09:00
Yuichi Nishiwaki 133e4c00bd leave a comment about conv parameter of pic_new_var is nullable 2014-01-12 16:05:42 +09:00
Yuichi Nishiwaki 944111ba09 make gensym API public 2014-01-12 16:03:36 +09:00
Yuichi Nishiwaki 825cde998b s/pic_proc_cv_reserve/pic_proc_cv_init/g 2014-01-12 13:02:16 +09:00
Yuichi Nishiwaki 45c49fdec3 don't rename each symbol more than a time 2014-01-10 17:55:58 +09:00
Yuichi Nishiwaki 62e52be061 [bugfix] macroexpand may return a non-symbol value even if passed a symbol. 2014-01-10 17:55:13 +09:00
Yuichi Nishiwaki 57253f9a6c compare is allowed to take non-symbol values 2014-01-10 17:52:31 +09:00
Yuichi Nishiwaki a159e52ae6 [bugfix] wrong error message 2014-01-10 17:49:27 +09:00
Yuichi Nishiwaki 6bdc9b360e [bugfix] wrong external representation for syntax type 2014-01-10 16:22:36 +09:00
Yuichi Nishiwaki 2e66b533c1 fix a small bug in a comment 2014-01-10 16:22:07 +09:00
Yuichi Nishiwaki 9b02247082 initial explicit renaming macro prototype 2014-01-09 16:34:22 +09:00
Yuichi Nishiwaki 8e4e226bd3 pic_get_args supports symbol 2014-01-09 16:33:38 +09:00
Yuichi Nishiwaki e8a50410a5 suppress unreachable warnings 2014-01-09 00:42:23 +09:00
Yuichi Nishiwaki 76f8916dca show debug print when a library is reopened 2014-01-09 00:40:13 +09:00
Yuichi Nishiwaki a9f4eff13e add parameter primitives: (picrin parameter) library 2014-01-09 00:39:13 +09:00
Yuichi Nishiwaki d7c510ae40 parameter implementation prototype 2014-01-09 00:38:09 +09:00
Yuichi Nishiwaki 92ceedbd15 add accessor functions to modify closed variables 2014-01-08 22:45:28 +09:00
Yuichi Nishiwaki e3e1ba4c11 rename procedure creation functions 2014-01-08 22:44:53 +09:00
Yuichi Nishiwaki e7f765d218 pic_get_args supports pic_procs 2014-01-08 20:53:28 +09:00
Yuichi Nishiwaki b9ef51530f don't intern symbols newly generated by new_uniq_sym 2014-01-08 20:41:29 +09:00
Yuichi Nishiwaki dccc234fd9 add pic_import 2014-01-08 15:38:31 +09:00
Yuichi Nishiwaki 33cbf5ff6a configurable none value 2014-01-08 15:22:23 +09:00
OGINO Masanori ceffd8a3bd Cast to `void *` for '%p' format specifiers.
Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
2014-01-05 18:10:33 +09:00
OGINO Masanori da1eb0bc10 Remove '\e'. The escape sequence is not in ISO C.
Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
2014-01-05 18:00:02 +09:00
Yuichi Nishiwaki 76f5cbf0b3 ENDLIBRARY requires a trailing semicolon 2013-12-10 07:26:43 -08:00
Yuichi Nishiwaki d23f686485 newline is not an element of (scheme write) 2013-12-10 05:59:03 -08:00
Yuichi Nishiwaki cdb1911f9f define (scheme inexact) library 2013-12-10 05:40:44 -08:00
Yuichi Nishiwaki 6dc66d354c add missing finite? function 2013-12-10 05:40:26 -08:00
Yuichi Nishiwaki afe630bc42 use find_library inside in_library 2013-12-10 05:40:03 -08:00
Yuichi Nishiwaki fb34b71de1 [bugfix] identifier=? dies when take auxiliary syntax (because they emit
errors during expansion)
2013-12-10 01:50:53 -08:00
Yuichi Nishiwaki 41ffd0d7e5 define macro primitives (such as make-syntactic-closure) in (picrin macro) 2013-12-10 01:49:48 -08:00
Yuichi Nishiwaki fd8c551159 use print_code for CODE_EXECUTE_HOOK 2013-12-10 01:47:45 -08:00
Yuichi Nishiwaki e021ac52ac identifier=? dons not necessarily take identifiers 2013-12-10 00:22:34 -08:00
Yuichi Nishiwaki 038020ff9f sequentially evaluate programs declared in library at the macroexpansion phase 2013-12-09 23:00:13 -08:00
Yuichi Nishiwaki bae4e6974b [bugfix] create a new senv before allocate a library 2013-12-09 22:59:27 -08:00
Yuichi Nishiwaki 74feec78f1 always emit the same unique symbol for unbound variable 2013-12-09 09:32:30 -08:00
Yuichi Nishiwaki 725297384a define-syntax is now capable of takeing a synclo object at the position
of the syntax name
2013-12-09 09:26:28 -08:00
Yuichi Nishiwaki d871c6f06c import and export take multiple spec in a time 2013-12-09 09:22:38 -08:00
Yuichi Nishiwaki 39b28fa674 debug print might cause segv 2013-12-09 09:09:24 -08:00
Yuichi Nishiwaki eeb09f336e Merge branch 'master' into libraries
Conflicts:
	src/macro.c
	src/pair.c
2013-12-09 08:27:29 -08:00
Yuichi Nishiwaki e05a469a06 fix ir-macro-transformer 2013-12-09 07:27:11 -08:00
Yuichi Nishiwaki 0dddddab55 ir-macro-transformer was broken 2013-12-09 07:26:51 -08:00
Yuichi Nishiwaki d21db9ae81 execute winded handlers when exit is called 2013-12-09 13:51:34 +09:00
Yuichi Nishiwaki 5035831d84 [bugfix] syntax objects should be brought to imported library's
senv->stx holder
2013-12-08 00:52:34 -08:00
Yuichi Nishiwaki dda8ad367c split built-in functins into libraries 2013-12-07 23:17:28 -08:00
Yuichi Nishiwaki 906f2c8a93 make-library returns existing library if name conflicts 2013-12-07 23:15:16 -08:00
Yuichi Nishiwaki fabe70aaf2 [bugfix] assq and assoc should return false if key is not found 2013-12-07 23:13:45 -08:00
Yuichi Nishiwaki bea04325e5 define arithmetic operators as c functions 2013-12-07 20:55:04 -08:00
Yuichi Nishiwaki 8720ffa0c5 s/DEFINE_MATH_PRED/DEFINE_ARITH_CMP/g 2013-12-07 20:55:04 -08:00
Yuichi Nishiwaki 617ee5aa68 add pic_parse 2013-12-07 20:54:23 -08:00
Yuichi Nishiwaki 24a41d8e27 add pic_assoc 2013-12-07 20:52:58 -08:00
Yuichi Nishiwaki 28da6d71ba add pic_equal_p 2013-12-07 20:52:58 -08:00
Yuichi Nishiwaki fb2e7ac498 declare all built-in functions and variables in (scheme base) library 2013-12-07 20:48:24 -08:00
Yuichi Nishiwaki 47dd186535 do not include core syntaces in the default library environment 2013-12-07 20:47:55 -08:00
Yuichi Nishiwaki 7f5a4c34a3 register and export to library functions defined by pic_defun 2013-12-07 20:47:09 -08:00
Yuichi Nishiwaki e71c5abfdb rename unbound symbols by default 2013-12-07 20:45:47 -08:00
Yuichi Nishiwaki 01e60b5d8e add pic_export and pic_export_as 2013-12-07 20:44:39 -08:00
Yuichi Nishiwaki 0110370cc4 improve reusability 2013-12-07 20:43:57 -08:00
Yuichi Nishiwaki 57ca3174aa define arithmetic operators as c functions 2013-12-07 20:43:36 -08:00
Yuichi Nishiwaki 629ee06b5f s/DEFINE_MATH_PRED/DEFINE_ARITH_CMP/g 2013-12-07 20:42:10 -08:00
Yuichi Nishiwaki 791ab95219 [bugfix] taking a wrong symbol for exporting 2013-12-07 19:03:18 -08:00
Yuichi Nishiwaki 0f491adc73 select library during macroexpanding define-library 2013-12-07 18:59:35 -08:00
Yuichi Nishiwaki 7cdcbd4604 set name to each library 2013-12-07 18:59:13 -08:00
Yuichi Nishiwaki 35b99d11a8 let make_library return a library 2013-12-07 18:44:14 -08:00
Yuichi Nishiwaki c764d28878 add pic_parse 2013-12-07 18:38:47 -08:00
Yuichi Nishiwaki 6b2d6a98eb Revert "change APIs of library functions"
This reverts commit 0115ede4de.

Conflicts:
	include/picrin.h
2013-12-07 18:27:08 -08:00
Yuichi Nishiwaki 818430bb81 implement import/export syntax 2013-12-07 09:42:34 -08:00
Yuichi Nishiwaki c989687564 [workaround] load core syntaces initially 2013-12-07 07:14:35 -08:00
Yuichi Nishiwaki 0115ede4de change APIs of library functions 2013-12-07 07:11:22 -08:00
Yuichi Nishiwaki 9cb777eec3 select the minimal library at first 2013-12-07 07:05:22 -08:00
Yuichi Nishiwaki 7c6ba80581 add library operation methods 2013-12-07 07:05:06 -08:00
Yuichi Nishiwaki 1ac5b6458c add pic_null_syntactic_env and pic_minimal_syntactic_env 2013-12-07 07:04:26 -08:00
Yuichi Nishiwaki aac2082991 add pic_assoc 2013-12-07 06:30:21 -08:00
Yuichi Nishiwaki dcb5b448cd add pic_equal_p 2013-12-07 06:29:29 -08:00
Yuichi Nishiwaki 381ed58bff add global library table 2013-12-07 05:36:14 -08:00
Yuichi Nishiwaki 931565d4ce add pic_lib 2013-12-07 03:58:18 -08:00
Yuichi Nishiwaki acbcde3b6a initial library support 2013-12-07 03:04:27 -08:00
Yuichi Nishiwaki a1e2e41840 add some symbols about library 2013-12-07 02:31:04 -08:00
Yuichi Nishiwaki 25378e3813 cosmetic changes 2013-12-06 07:51:32 -08:00
Yuichi Nishiwaki b3a2da1079 Merge remote-tracking branch 'origin/master' 2013-12-06 04:48:10 -08:00
Yuichi Nishiwaki ef04e3f02c add pic_core_syntactic_env 2013-12-06 18:04:36 +09:00
Yuichi Nishiwaki 4d8ffa43c8 delete auto resource releasing facility 2013-12-03 08:16:53 -08:00
Yuichi Nishiwaki 7e69ae1878 add port-close procedure 2013-12-03 08:16:13 -08:00
Yuichi Nishiwaki afffa20785 pic_apply supports multiple arguments 2013-12-03 06:40:50 -08:00
Yuichi Nishiwaki a7df867a55 suppress gcc's warnings 2013-12-03 06:10:46 -08:00
Yuichi Nishiwaki 4e98d37ab1 remove old debug prints 2013-12-03 13:08:23 +09:00
Yuichi Nishiwaki dc7c801c38 exprs during macroexpansion may have syntactic-closure in the tail position 2013-12-03 13:08:00 +09:00
Yuichi Nishiwaki 761deffe1f macroexpand_list supports any kind of improper list 2013-12-03 13:07:25 +09:00
Yuichi Nishiwaki b5b30de05a remove a field for debug of union header 2013-12-03 11:49:32 +09:00
Yuichi Nishiwaki 7685afdb79 fix logic flaw in GC 2013-12-03 11:45:38 +09:00
Yuichi Nishiwaki 704b2d148b rewrite pic_type_repr 2013-12-02 13:39:11 +09:00
Yuichi Nishiwaki a43e3248e8 calloc should take size_t 2013-12-01 12:44:43 +09:00
Yuichi Nishiwaki 04434f44fd cosmetic changes 2013-11-30 00:07:49 +09:00
Yuichi Nishiwaki 21f2c58a53 [gc][bugfix] sweeping failed when the heap gets completely
exhausted (i.e. all blocks' size are zero)
2013-11-29 12:10:10 +09:00
Yuichi Nishiwaki f03a153774 add freed object counter 2013-11-29 12:10:10 +09:00
Yuichi Nishiwaki 4c5d3b4257 Revert "[bugfix] do not fuse end-of-page block into other blocks"
This reverts commit 5656590fa0.
2013-11-29 12:10:10 +09:00
Yuichi Nishiwaki ab5de1c0c4 fix #6 2013-11-29 12:10:02 +09:00
Yuichi Nishiwaki 5656590fa0 [bugfix] do not fuse end-of-page block into other blocks 2013-11-28 21:58:25 +09:00
Yuichi Nishiwaki e10bbac8e5 accept injected symbols (syntactic-closures) at the places of lambda formals 2013-11-28 18:40:31 +09:00
Yuichi Nishiwaki 3266ae7d3c [bugfix] missed to mark stx->senv 2013-11-28 13:15:27 +09:00
Yuichi Nishiwaki c2d7f3d1f2 [bugfix] wrong size for pic_proc allocation 2013-11-27 06:31:49 -08:00
Yuichi Nishiwaki 49caf79ce6 [bugfix] new_uniq_sym must take one more byte chunk for new string 2013-11-27 06:31:12 -08:00
Yuichi Nishiwaki 7b8ee3eb97 add er-macro-transformer 2013-11-27 17:26:07 +09:00
Yuichi Nishiwaki 1ab588d21f added hygienic macro facility! Fooo! 2013-11-27 15:58:28 +09:00
Yuichi Nishiwaki 9a027dae6e add error guard 2013-11-27 15:57:23 +09:00
Yuichi Nishiwaki bedc5dc6be revise output format of syntactic closure object 2013-11-27 15:56:29 +09:00
Yuichi Nishiwaki ceedd05ef0 [bugfix] pic_apply_argv concatenated args in reverse order 2013-11-27 15:55:54 +09:00
Yuichi Nishiwaki 78cafe3db7 add make-syntactic-closure function 2013-11-27 15:04:44 +09:00
Yuichi Nishiwaki ab74920a6f add pic_sc (syntactic closure) structure 2013-11-27 15:04:02 +09:00
Yuichi Nishiwaki a7a3bfc270 [CSE] add new_global_senv and new_local_senv 2013-11-27 14:19:46 +09:00
Yuichi Nishiwaki b4218a7a03 cosmetic changes 2013-11-27 14:00:23 +09:00
Yuichi Nishiwaki 73831283b6 cleanup 2013-11-27 13:51:24 +09:00
Yuichi Nishiwaki c1788d31b0 Merge branch 'master' into syntactic-closure 2013-11-27 13:06:37 +09:00
Yuichi Nishiwaki bbe3e990e4 Revert "pluggable heap pages"
This reverts commit e6523730a4.
2013-11-27 13:04:12 +09:00
Yuichi Nishiwaki 5e3f2dacf4 Revert "add_heap_page should not be invoked in gc_alloc, but should be in obj_alloc"
This reverts commit f11623f075.
2013-11-27 13:04:03 +09:00
Yuichi Nishiwaki 94aac37443 macros must be added to var_tbl 2013-11-26 17:43:59 -08:00
Yuichi Nishiwaki d2af692280 add a fixme comment 2013-11-26 17:43:49 -08:00
Yuichi Nishiwaki d7f8d67bf2 debug-print when unbound symbol is found 2013-11-26 16:52:30 -08:00
Yuichi Nishiwaki 38ab43d7fc [bugfix] binding leak 2013-11-26 16:51:48 -08:00
Yuichi Nishiwaki 3710d5feea support varg lambda 2013-11-26 16:51:17 -08:00
Yuichi Nishiwaki b2704fb123 increment xlen in the end 2013-11-26 16:50:38 -08:00
Yuichi Nishiwaki c336a354e4 publish pic_defmacro as a public API 2013-11-26 09:09:15 -08:00
Yuichi Nishiwaki 2dee30a0b5 macroexpand_list supports improper list 2013-11-26 09:07:57 -08:00
Yuichi Nishiwaki 43d449d2aa s/define_macro/pic_defmacro/g 2013-11-26 09:07:06 -08:00
Yuichi Nishiwaki cbd636e0a7 [bugfix] do not release pic->var_tbl when a senv holding it is dead 2013-11-26 09:00:16 -08:00
Yuichi Nishiwaki e7673c65bd [bugfix] syntaces should be registered to var_tbl, not global_tbl 2013-11-26 08:59:16 -08:00
Yuichi Nishiwaki be311cb96f replace old macroexpand facility with new renamer implementation 2013-11-26 08:43:58 -08:00
Yuichi Nishiwaki 1f3f7c99a2 save macro procesures in each syntax object 2013-11-26 08:42:13 -08:00
Yuichi Nishiwaki 3d1f74d8f5 add 'define-macro' core syntax 2013-11-26 08:41:01 -08:00
Yuichi Nishiwaki ddbc2c83a2 add missing core symbol registration 2013-11-26 08:39:37 -08:00
Yuichi Nishiwaki 3009473d52 debug prints for macroexpand 2013-11-26 08:38:26 -08:00
Yuichi Nishiwaki f6bc51d16d add xlen/xcapa member to pic_senv 2013-11-26 08:36:58 -08:00
Yuichi Nishiwaki a32473ae92 add core syntaces in pic_open 2013-11-26 08:35:35 -08:00
Yuichi Nishiwaki a2e1f21b29 add global identifier table 2013-11-26 08:30:30 -08:00
Yuichi Nishiwaki 673b66a723 use register_core_symbol macro to initialize pic_state 2013-11-26 06:40:48 -08:00
Yuichi Nishiwaki ad3c268f81 insert renamer pass after old macroexpansion phase 2013-11-26 04:08:46 -08:00
Yuichi Nishiwaki 1ad562f1a8 [wip] add renamer 2013-11-26 04:06:46 -08:00
Yuichi Nishiwaki 573ba79782 [bugfix] log10 must not be given 0 2013-11-26 04:06:03 -08:00
Yuichi Nishiwaki b7f0f3dfb3 [bugfix] get rid of a comma 2013-11-26 04:05:37 -08:00
Yuichi Nishiwaki c59d8f601b add PIC_TT_SENV and PIC_TT_SYNTAX 2013-11-26 04:05:02 -08:00
Yuichi Nishiwaki 3c65025394 add macro.h 2013-11-26 04:03:52 -08:00
Yuichi Nishiwaki bf6a337a5f add pic_cxxr functions 2013-11-26 02:42:13 -08:00
Yuichi Nishiwaki 72cf45d4ea add `new_uniq_sym` function 2013-11-25 23:38:39 -08:00
Yuichi Nishiwaki 4701f86ff0 fix a grammar error 2013-11-26 16:22:49 +09:00
Yuichi Nishiwaki 52f1776b22 cleanup 2013-11-25 11:10:57 +09:00
Yuichi Nishiwaki f11623f075 add_heap_page should not be invoked in gc_alloc, but should be in obj_alloc 2013-11-25 00:24:03 +09:00
Yuichi Nishiwaki df20de5285 push back dead objects to free list 2013-11-25 00:22:32 +09:00
Yuichi Nishiwaki 40bfe13895 add a comment to sweep algorithm 2013-11-22 07:30:29 -08:00
Yuichi Nishiwaki 563b65efde s/expand.c/macro.c/ 2013-11-22 07:22:52 -08:00
Yuichi Nishiwaki 579735d16e s/heap_page/pic_heap/g 2013-11-22 07:19:31 -08:00
Yuichi Nishiwaki e6523730a4 pluggable heap pages 2013-11-22 07:12:03 -08:00
Yuichi Nishiwaki 1be72f1e18 rewrite gc! 2013-11-22 06:38:29 -08:00
Yuichi Nishiwaki 2dd293c0f9 [workaround] add stack overflow detector 2013-11-22 06:37:57 -08:00
Yuichi Nishiwaki 0a521c2314 add overflow guards to some global stacks (or value pools) 2013-11-22 06:35:51 -08:00
Yuichi Nishiwaki 23b806cc41 print propagated error messages when stdlib failed to build 2013-11-22 06:34:34 -08:00
Yuichi Nishiwaki 4b326e4f6e add new compilation flag GC_DEBUG_DETAIL 2013-11-22 03:29:05 -08:00
Yuichi Nishiwaki 4004282e50 alloc stacks by calloc, not malloc 2013-11-22 03:28:09 -08:00
Yuichi Nishiwaki 626c0adb3a fix broken pic_type_repr 2013-11-22 03:27:09 -08:00
Yuichi Nishiwaki f610424ae5 remove unnecessary protect 2013-11-22 01:53:22 -08:00
Yuichi Nishiwaki 05b2717b9e less memory usage of pic_reverse 2013-11-21 06:32:56 -08:00
Yuichi Nishiwaki 00fc0ee931 protect more objects during expansion 2013-11-21 06:31:32 -08:00
Yuichi Nishiwaki f146287eff load_stdlib releases arena objects every time evaluating exprssion 2013-11-21 06:30:33 -08:00
Yuichi Nishiwaki 6581177ec5 realloc pic->irep when exhausted 2013-11-21 06:28:43 -08:00
Yuichi Nishiwaki 58b9e2cb60 debug prints when a global stack is realloc'ed 2013-11-21 06:28:06 -08:00
Yuichi Nishiwaki e49ddbd13b [bugfix] makeing a shared library failure under the version 3 of bison 2013-11-18 20:47:20 +09:00
Yuichi Nishiwaki ed0b02ecfa fixed #5 (again) 2013-11-18 20:38:03 +09:00
Yuichi Nishiwaki d2bb4ad4f2 Revert "(maybe) fix #5"
This reverts commit a3ac65a75f.
2013-11-18 20:36:30 +09:00
Yuichi Nishiwaki a3ac65a75f (maybe) fix #5 2013-11-18 20:35:27 +09:00
Yuichi Nishiwaki d5f01595b0 fixed #4 2013-11-18 20:24:09 +09:00
Yuichi Nishiwaki 6f94202e13 s/pic_expand/pic_macroexpand/g 2013-11-18 16:36:44 +09:00
Yuichi Nishiwaki a3c2dabcc7 add feature function 2013-11-18 01:46:28 +09:00
Yuichi Nishiwaki 0d952d3639 add string functions 2013-11-18 01:09:54 +09:00
Yuichi Nishiwaki 6cfbe51c87 pic_get_args: change type of argc 2013-11-18 01:07:51 +09:00
Yuichi Nishiwaki 6ac3055816 change return type of pic_str_new to struct pic_string * 2013-11-18 00:28:42 +09:00
Yuichi Nishiwaki d4188e0969 add error function 2013-11-17 18:16:03 +09:00
Yuichi Nishiwaki 5ffb4eb6c9 add string? 2013-11-17 17:42:52 +09:00
Yuichi Nishiwaki 9526ca789a free as many as possible! 2013-11-17 17:33:28 +09:00
Yuichi Nishiwaki fdc9bfea4e initial exception handling support 2013-11-17 17:25:26 +09:00
Yuichi Nishiwaki 5668ae1b29 [bugfix] local variables should be initialized before copied to env object 2013-11-17 17:24:37 +09:00
Yuichi Nishiwaki 737f916a8c add pic_errorf 2013-11-17 17:23:13 +09:00
Yuichi Nishiwaki 224b08fb92 [bugfix] after save_cont any local variable must not be modified!
If save_cont returns a cont object, a local variable will receive the
object and the machine stack state will have just been changed then.
To avoid that, we need set cont object to the local before the machine
stack is copied.
2013-11-17 17:20:19 +09:00
Yuichi Nishiwaki 38988b7770 add global exception handler stack 2013-11-17 16:02:58 +09:00
Yuichi Nishiwaki c79e08632c when restoring continuation sp and ci must be re-allocated 2013-11-17 15:58:53 +09:00
Yuichi Nishiwaki 5947240614 [bugfix] fix crash on deeply nested lambdas 2013-11-17 13:12:59 +09:00
Yuichi Nishiwaki 14ad038051 wipe reallocated cv_tbl 2013-11-17 13:10:36 +09:00
Yuichi Nishiwaki 242a366cbf check vector index out of range 2013-11-17 02:32:27 +09:00
Yuichi Nishiwaki 1ef3ed91a2 fix for-each compilation bug 2013-11-16 23:32:34 +09:00
Yuichi Nishiwaki a68b470e06 pic_get_args can parse '*' 2013-11-15 22:53:41 +09:00
Yuichi Nishiwaki c57f1bfbe1 define math comp predicates as C functions 2013-11-15 22:51:51 +09:00
Yuichi Nishiwaki e94aaffd34 shrink default arena size! 2013-11-15 19:54:47 +09:00
Yuichi Nishiwaki 9cdca8bc70 implement yy arena gc 2013-11-15 19:40:31 +09:00
Yuichi Nishiwaki 690f66dd76 s/is_marked/gc_is_marked/g 2013-11-15 19:32:01 +09:00
Yuichi Nishiwaki f506eac3dd add pic_obj_alloc_unsafe; preparation for yy_arena 2013-11-15 19:31:17 +09:00
Yuichi Nishiwaki 9662ab30ec add pic_vec_extend_ip (for internal API) 2013-11-15 19:30:25 +09:00
Yuichi Nishiwaki c62505b930 initialize newly allocated vector with falses 2013-11-15 19:29:54 +09:00
Yuichi Nishiwaki 73d9b0dc79 use strndup if possible 2013-11-15 17:08:18 +09:00
Yuichi Nishiwaki 93e5758e4c [bugfix] gc may enter an infinite loop 2013-11-15 16:11:54 +09:00
Yuichi Nishiwaki a2f022df4e implement native version of some primitive functions such as car,crd... 2013-11-15 16:07:03 +09:00
Yuichi Nishiwaki 984588b1b6 add reference count GC for pic_block objects 2013-11-15 11:51:58 +09:00
Yuichi Nishiwaki c22f566c06 arena stash can be statically allocated 2013-11-15 10:54:56 +09:00
Yuichi Nishiwaki 066575fa1c error when apply got non-proc at the first place of arguments 2013-11-14 20:42:14 +09:00
Yuichi Nishiwaki 850290dda3 add some char primitives 2013-11-14 20:41:22 +09:00
Yuichi Nishiwaki 7f35eb7daa support named characters 2013-11-14 19:45:38 +09:00
Yuichi Nishiwaki 6de5bc7550 propagate jmp_bufs (useful when C stack and scheme stack interleave) 2013-11-14 19:26:06 +09:00
Yuichi Nishiwaki e68c69ceb1 support datum comment 2013-11-14 17:31:40 +09:00
Yuichi Nishiwaki 48c5c6b17c add vector-set! 2013-11-14 16:57:07 +09:00
Yuichi Nishiwaki b56b86aae2 [bugfix] variables defined by internal definitions may be referred from
inner environments
2013-11-14 16:52:49 +09:00
Yuichi Nishiwaki b9fce69c61 support internal definitions 2013-11-13 18:08:22 +09:00
Yuichi Nishiwaki 2fb4720e22 [bugfix] (= 1 1.0) doesn't work 2013-11-13 17:40:31 +09:00
Yuichi Nishiwaki 5479e7c6ba [bugfix] atan and log functions doesn't accept single argument 2013-11-13 17:38:54 +09:00
Yuichi Nishiwaki 223e873ff0 accept empty lines in repl 2013-11-13 17:37:05 +09:00
Yuichi Nishiwaki d6c377a33b native support for dynamic-wind 2013-11-11 18:04:21 +09:00
Yuichi Nishiwaki 8c40fc8d9e add square bracket notation 2013-11-11 11:57:01 +09:00
Yuichi Nishiwaki 8b484b69d7 rename fields in struct pic_cont 2013-11-11 10:14:42 +09:00
Yuichi Nishiwaki 4fea9169cc error when argument of apply is not a proper list 2013-11-11 08:01:08 +09:00
Yuichi Nishiwaki 7f3d3ac11b copy stacks to restore a continuation 2013-11-11 07:59:52 +09:00
Yuichi Nishiwaki 96d75b3c06 add apply function 2013-11-10 00:41:59 +09:00
Yuichi Nishiwaki fd3300f9db emit int result in int-int division if possible 2013-11-09 16:32:13 +09:00
Yuichi Nishiwaki 0d2e49c17e cleanup 2013-11-09 15:29:58 +09:00
Yuichi Nishiwaki 9d467e4d14 change some function names in cont.c 2013-11-09 15:25:19 +09:00
Yuichi Nishiwaki 76990d512f suppress warnings 2013-11-09 15:24:58 +09:00
Yuichi Nishiwaki 64ae8bd7b0 initial call/cc support 2013-11-09 14:14:25 +09:00
Yuichi Nishiwaki e373aa7b92 add missing pic_apply_argv definition 2013-11-09 14:13:14 +09:00
Yuichi Nishiwaki 0d28f246de add pic_get_proc 2013-11-09 14:12:59 +09:00
Yuichi Nishiwaki 89eceec7f8 fix a bug that pic_apply faults when cfunc proc is given in DEBUG mode 2013-11-09 14:12:36 +09:00
Yuichi Nishiwaki 125189e25e fix a bug in initial ciend setting 2013-11-09 14:11:54 +09:00
Yuichi Nishiwaki d973f41d84 values of some compound types can reach to expanstion phase 2013-11-09 14:11:19 +09:00
Yuichi Nishiwaki d3ed7bce53 eq? and eqv? return true when the pointers are equal 2013-11-09 13:41:11 +09:00
Yuichi Nishiwaki 62f19e85c5 varg * and / operators 2013-11-07 12:52:59 +09:00
Yuichi Nishiwaki 9d304be02e varg - operator 2013-11-07 12:18:00 +09:00
Yuichi Nishiwaki 84c1156b9d add unary minus operator 2013-11-07 12:17:37 +09:00
Yuichi Nishiwaki ae376b4903 fix broken pic_float_p 2013-11-07 12:17:16 +09:00
Yuichi Nishiwaki b0a4249220 varg + operator 2013-11-06 18:55:06 +09:00
Yuichi Nishiwaki 8a0b8da884 missing pic_eqv_p (when PIC_NAN_BOXING disabled) 2013-11-06 18:54:46 +09:00
Yuichi Nishiwaki fc42c71304 add eqv? and equal? 2013-11-06 16:12:31 +09:00
Yuichi Nishiwaki 27dc840118 eq? predicate supports nan-boxing 2013-11-06 16:06:31 +09:00
Yuichi Nishiwaki ac14a2271b fix a bug in pic_false_value 2013-11-05 21:08:32 +09:00
Yuichi Nishiwaki d9cb5d4eee nan-boxing support 2013-11-05 20:33:24 +09:00
Yuichi Nishiwaki e056586ab9 add pic_init_value macro 2013-11-05 00:42:44 -05:00
Yuichi Nishiwaki 46fccff806 cleanup 2013-11-05 00:30:03 -05:00
Yuichi Nishiwaki 5850699d75 force indirect reference to pic_value vtype 2013-11-04 23:37:08 -05:00
Yuichi Nishiwaki 9bba0353e8 add some bytevector primitives 2013-11-04 22:58:16 -05:00
Yuichi Nishiwaki aebf7f00f7 initial bytevector support 2013-11-04 22:38:23 -05:00
Yuichi Nishiwaki 1675ad9f52 initial char support 2013-11-04 21:37:18 -05:00
Yuichi Nishiwaki 8aca1ebc96 rename pic_code.u.c -> pic_code.u.r 2013-11-04 21:32:09 -05:00
Yuichi Nishiwaki 5bb762b6e3 [bugfix] crash on calling vector-ref 2013-11-04 20:59:43 -05:00
Yuichi Nishiwaki 01a5819706 add vector primitives 2013-11-04 20:55:57 -05:00
Yuichi Nishiwaki fb66791216 do not create pic_env object when not needed 2013-11-04 20:27:44 -05:00
Yuichi Nishiwaki 86458359e3 reduce allocation size when creating pic_env object in OP_CALL 2013-11-04 20:23:06 -05:00
Yuichi Nishiwaki 2dc955aaf5 s/cv_tbl/dirty_flags/g 2013-11-04 19:14:21 -05:00
Yuichi Nishiwaki d0602303e3 s/num_val/valuec/g 2013-11-04 16:07:36 -05:00
Yuichi Nishiwaki f5b98e38f8 [bugfix] allocate pic_env values area for local variables 2013-11-04 15:32:26 -05:00
Yuichi Nishiwaki 76dadc8448 remove toplevel pic_env that is never used 2013-11-04 15:30:11 -05:00
Yuichi Nishiwaki aeff650ccf no need to control arena_index in pic_codegen 2013-11-04 13:18:46 -05:00
Yuichi Nishiwaki 808fe32ac0 add boolean functions 2013-11-03 11:39:13 -05:00
Yuichi Nishiwaki 404ccb7fb1 cleanup 2013-11-01 19:19:51 +09:00
Yuichi Nishiwaki 346b159e7e add some debug prints 2013-11-01 19:02:46 +09:00
Yuichi Nishiwaki 1f0d096ed6 protect return values from gc at the end of VM 2013-11-01 18:56:17 +09:00
Yuichi Nishiwaki 77b6b94e74 gc must mark macros as well 2013-11-01 18:55:44 +09:00
Yuichi Nishiwaki 8007baf011 [bugfix] allocate space to hold closed rest args variable in pic_env 2013-11-01 18:55:23 +09:00
Yuichi Nishiwaki 75667d7649 [bugfix] push nil_value even if ci->argc equals varg proc's argc 2013-11-01 15:09:20 +09:00
Yuichi Nishiwaki 5a7b19b348 save each opcode currently fetched into 'c' 2013-11-01 14:44:26 +09:00
Yuichi Nishiwaki 5e74caa7a5 add some important primitive macros such as cond, and, or, ...etc 2013-10-31 00:31:33 +09:00
Yuichi Nishiwaki 207ec5bd24 add eq? function 2013-10-31 00:29:55 +09:00
Yuichi Nishiwaki 98a41314fe parser returns multiple expressions in a call 2013-10-30 17:06:01 +09:00
Yuichi Nishiwaki 6fcce1cd23 cleanup 2013-10-30 16:43:15 +09:00
Yuichi Nishiwaki b7e55b043f introduce legacy macros 2013-10-30 16:42:44 +09:00
Yuichi Nishiwaki abd5bc9216 fix a bug introded in prev prev commit 2013-10-30 15:40:40 +09:00
Yuichi Nishiwaki 1e4ff3276a add pic_type_repr 2013-10-30 15:37:33 +09:00
Yuichi Nishiwaki d4001a70ae VM works with procs not terminated with OP_STOP 2013-10-30 15:36:28 +09:00
Yuichi Nishiwaki 5be1cd7092 add some comments in codegen_scopes' members 2013-10-30 12:16:45 +09:00
Yuichi Nishiwaki 611b273dcd missed to add src/vector.c 2013-10-30 10:12:04 +09:00
Yuichi Nishiwaki 76ec63d1ca adjust callinfo when OP_STOP 2013-10-30 10:05:47 +09:00
Yuichi Nishiwaki 9bc172bde5 add stack underflow detector 2013-10-30 10:05:21 +09:00
Yuichi Nishiwaki a4d20060e7 compile tail calls into OP_TAILCALL 2013-10-30 10:04:23 +09:00
Yuichi Nishiwaki e4b913cb15 add OP_TAILCALL 2013-10-30 10:03:46 +09:00
Yuichi Nishiwaki 4721f42f5a bugfix: define can take only 1 argument 2013-10-29 22:16:16 +09:00
Yuichi Nishiwaki edd890ae0b support 2-argument if syntax 2013-10-29 22:15:58 +09:00
Yuichi Nishiwaki 073f45666a write function should be print even env objects 2013-10-29 16:44:38 +09:00
Yuichi Nishiwaki a0a8a94abc add gc stress test 2013-10-29 16:40:25 +09:00
Yuichi Nishiwaki 35bbd66812 fix gc bug: ci->env and env-up are nullable 2013-10-29 16:39:57 +09:00
Yuichi Nishiwaki edcd060a8a initial vector support 2013-10-29 15:51:37 +09:00
Yuichi Nishiwaki 49072bf5e4 [bugfix] fix closure issue 2013-10-29 10:16:56 +09:00
Yuichi Nishiwaki 15fdbc9c7d add some symbol primitive functions 2013-10-29 02:49:38 +09:00
Yuichi Nishiwaki 4402497a46 fix a bug related to immediate symbol value 2013-10-29 02:33:49 +09:00
Yuichi Nishiwaki 9424f0b9c0 show codegen error message when compilation failure 2013-10-29 02:33:22 +09:00
Yuichi Nishiwaki 1d9410638d remove unused auxuality data field proc->aux 2013-10-29 02:23:14 +09:00
Yuichi Nishiwaki db38cdc7e0 check sym_pool size when interning symbol 2013-10-29 02:16:26 +09:00
Yuichi Nishiwaki 63b52991da introduce immediate symbol value 2013-10-29 02:11:31 +09:00
Yuichi Nishiwaki a19c59ba87 remove stuff rerated to parser_control from scan.l 2013-10-28 22:55:15 +09:00
Yuichi Nishiwaki 94e1e245ea create picrin objects in parser stage, not in scan stage 2013-10-28 22:49:15 +09:00
Yuichi Nishiwaki 9a20b50fc5 [vm] take care of int overflow 2013-10-28 21:26:39 +09:00
Yuichi Nishiwaki 4fa2bad5fa add pic_apply function (and remove pic_run) 2013-10-28 17:45:13 +09:00
Yuichi Nishiwaki 67c13b841c read line comments 2013-10-28 13:04:24 +09:00
Yuichi Nishiwaki c77b8be011 insert type checks in pic_get_args 2013-10-28 00:40:10 +09:00
Yuichi Nishiwaki 5133e04c39 bugfix in pic_get_args 2013-10-28 00:33:24 +09:00
Yuichi Nishiwaki 90b691be67 add exact/inexact function 2013-10-28 00:33:10 +09:00
Yuichi Nishiwaki 350f4d1abd [bugfix] support 'I' format in pic_get_args 2013-10-28 00:24:51 +09:00
Yuichi Nishiwaki d3df6dcbf2 support exact integer 2013-10-28 00:21:24 +09:00
Yuichi Nishiwaki 63c05209f8 add built-in library 2013-10-27 18:38:55 +09:00
Yuichi Nishiwaki f192c96650 parse-from-file facility 2013-10-27 18:38:41 +09:00
Yuichi Nishiwaki c93cef8c8c do not wrap with a begin read expressions if it is single 2013-10-27 18:14:15 +09:00
Yuichi Nishiwaki f3041b7ebc support rest arguments 2013-10-27 18:13:36 +09:00
Yuichi Nishiwaki 40a2568142 read multiple expressions; read exprs are wrapped in a begin 2013-10-27 17:24:44 +09:00
Yuichi Nishiwaki 14dcb63c33 support `(define (foo . args) . body)` style definition 2013-10-27 02:51:06 +09:00
Yuichi Nishiwaki 870320f3a1 refactor incomplete data parsing 2013-10-27 02:06:59 +09:00
Yuichi Nishiwaki 51253c00b9 add procedure? 2013-10-25 00:37:20 +09:00
Yuichi Nishiwaki c782912212 add pair? 2013-10-25 00:37:08 +09:00
Yuichi Nishiwaki c88f0926a4 fix a bug in valid_formal 2013-10-25 00:35:37 +09:00
Yuichi Nishiwaki 83de938342 add some port predicates 2013-10-24 22:56:04 +09:00
Yuichi Nishiwaki 7bb27295c0 warn global redefinition 2013-10-24 22:29:40 +09:00
Yuichi Nishiwaki 331fdaba4c warn various kinds of syntax errors during codegen 2013-10-24 21:55:07 +09:00
Yuichi Nishiwaki 9cb28f3156 add OP_EQ/OP_LT/OP_LE 2013-10-24 21:10:13 +09:00
Yuichi Nishiwaki 2732a5a4ec inti env->value with undef objects 2013-10-24 20:53:27 +09:00
Yuichi Nishiwaki 411395995c s/env.numcv/env.num_val/g 2013-10-24 03:41:48 +09:00
Yuichi Nishiwaki a926c54be3 warn invalid application 2013-10-24 03:38:29 +09:00
Yuichi Nishiwaki d75b624b4a add OP_LSET and OP_CSET 2013-10-24 03:14:32 +09:00
Yuichi Nishiwaki 337b54dc40 initial closure support 2013-10-24 02:51:02 +09:00
Yuichi Nishiwaki 4b31901bce add OP_CREF 2013-10-24 02:04:49 +09:00
Yuichi Nishiwaki bd851318d1 add pic_env struct 2013-10-24 02:02:07 +09:00
Yuichi Nishiwaki f854e225c8 test implementation for closed variable reference 2013-10-24 00:33:37 +09:00
Yuichi Nishiwaki ec0f0d3572 add pic_calloc 2013-10-24 00:32:03 +09:00
Yuichi Nishiwaki 0fd1bbeae9 throw wrong number of arguments error for user defined lambda call 2013-10-24 00:09:40 +09:00
Yuichi Nishiwaki 2ec7f381d0 cleanup codegen.c 2013-10-23 17:26:02 +09:00
Yuichi Nishiwaki 79ee6f6ae4 introduce codegen_state structure 2013-10-23 17:25:39 +09:00
Yuichi Nishiwaki 035de0016b evaluate arguments in normal (lexical) order 2013-10-23 15:55:42 +09:00
Yuichi Nishiwaki d12ed0a139 rename pic_scope -> codegen_scope 2013-10-23 15:52:14 +09:00
Yuichi Nishiwaki 947ddc45c8 bugfix: lambda must use new_scope to gen body code 2013-10-23 15:46:18 +09:00
Yuichi Nishiwaki cc025626d5 use start state to parse strings 2013-10-23 13:44:45 +09:00
Yuichi Nishiwaki dd7958c3d6 reader supports quasiquote abbrev 2013-10-23 12:39:48 +09:00
Yuichi Nishiwaki f01ac50dd2 add set-car!/set-cdr! 2013-10-23 12:01:06 +09:00
Yuichi Nishiwaki 5f05fed38f add missing extended identifier characters 2013-10-23 12:00:53 +09:00
Yuichi Nishiwaki f31ddb36a2 reentrant scanner 2013-10-23 03:45:57 +09:00
Yuichi Nishiwaki bb0bb0e186 reentrant parser (but not for scanner) 2013-10-23 03:13:10 +09:00
Yuichi Nishiwaki dd3adf30e6 use xhash to manage scopes during codegin 2013-10-22 22:22:35 +09:00
Yuichi Nishiwaki 76cba3fad2 add some number-theoretic division functions 2013-10-22 18:29:55 +09:00
Yuichi Nishiwaki 828606aed5 throw an error when finding invalid argument specifier 2013-10-22 17:44:47 +09:00
Yuichi Nishiwaki 779199d571 add many many number primitive functions 2013-10-22 17:24:07 +09:00
Yuichi Nishiwaki d696339577 [bugfix] pic_get_args should ignore optional args when i > argc 2013-10-22 17:23:21 +09:00
Yuichi Nishiwaki b45d7d9592 add eof-object type 2013-10-22 16:02:20 +09:00
Yuichi Nishiwaki 176d167de8 add some file open functions 2013-10-22 15:44:03 +09:00
Yuichi Nishiwaki 6245ec7e05 finalize port objects when collected 2013-10-22 15:40:36 +09:00
Yuichi Nishiwaki d2e09fa2c7 add file related functions 2013-10-22 15:16:35 +09:00
Yuichi Nishiwaki 0c1babb6c5 add pic_reverse 2013-10-22 00:19:43 +09:00