1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

* read.h (SCM_N_READ_OPTIONS): increase SCM_N_READ_OPTIONS to 4.

(SCM_KEYWORD_STYLE): defined.

	* read.c (scm_read_opts): add a keywords option.  This isn't a
	boolean option, in case someone wants to add support for DSSSL
	keywords too.
	Setup scm_keyword_prefix symbol.
	(scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is
	set to 'prefix.
*	I've left keyword support disabled by default, since it doesn't
	seem to break the module system and it gives R4RS standard behaviour.
	It can be reactivated with (read-set! keywords 'prefix).
This commit is contained in:
Gary Houston 1997-03-10 06:49:15 +00:00
parent d2d82421a6
commit c773377128
3 changed files with 31 additions and 8 deletions

View file

@ -1,3 +1,18 @@
Mon Mar 10 06:28:54 1997 Gary Houston <ghouston@actrix.gen.nz>
* read.h (SCM_N_READ_OPTIONS): increase SCM_N_READ_OPTIONS to 4.
(SCM_KEYWORD_STYLE): defined.
* read.c (scm_read_opts): add a keywords option. This isn't a
boolean option, in case someone wants to add support for DSSSL
keywords too.
Setup scm_keyword_prefix symbol.
(scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is
set to 'prefix.
* I've left keyword support disabled by default, since it doesn't
seem to break the module system and it gives R4RS standard behaviour.
It can be reactivated with (read-set! keywords 'prefix).
Sun Mar 9 14:14:39 1997 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* arbiters.c (scm_make_arbiter): Bugfix: Must SCM_DEFER_INTS

View file

@ -58,13 +58,17 @@
SCM_SYMBOL (scm_keyword_prefix, "prefix");
scm_option scm_read_opts[] = {
{ SCM_OPTION_BOOLEAN, "copy", 0,
"Copy source code expressions." },
{ SCM_OPTION_BOOLEAN, "positions", 0,
"Record positions of source code expressions." },
{ SCM_OPTION_BOOLEAN, "case-insensitive", 0,
"Convert symbols to lower case."}
"Convert symbols to lower case."},
{ SCM_OPTION_SCM, "keywords", SCM_BOOL_F,
"Style of keyword recognition: #f or 'prefix"}
};
SCM_PROC (s_read_options, "read-options-interface", 0, 1, 0, scm_read_options);
@ -508,12 +512,15 @@ tryagain_no_flush_ws:
goto tok;
case ':':
j = scm_read_token ('-', tok_buf, port, 0);
p = scm_intern (SCM_CHARS (*tok_buf), j);
if (SCM_PORT_REPRESENTATION (port) != scm_regular_port)
scm_set_symbol_multi_byte_x (SCM_CAR (p), SCM_BOOL_T);
return scm_make_keyword_from_dash_symbol (SCM_CAR (p));
if (SCM_KEYWORD_STYLE == scm_keyword_prefix)
{
j = scm_read_token ('-', tok_buf, port, 0);
p = scm_intern (SCM_CHARS (*tok_buf), j);
if (SCM_PORT_REPRESENTATION (port) != scm_regular_port)
scm_set_symbol_multi_byte_x (SCM_CAR (p), SCM_BOOL_T);
return scm_make_keyword_from_dash_symbol (SCM_CAR (p));
}
/* fallthrough */
default:
j = scm_read_token (c, tok_buf, port, 0);
/* fallthrough */

View file

@ -72,7 +72,8 @@ extern scm_option scm_read_opts[];
#define SCM_COPY_SOURCE_P scm_read_opts[0].val
#define SCM_RECORD_POSITIONS_P scm_read_opts[1].val
#define SCM_CASE_INSENSITIVE_P scm_read_opts[2].val
#define SCM_N_READ_OPTIONS 3
#define SCM_KEYWORD_STYLE scm_read_opts[3].val
#define SCM_N_READ_OPTIONS 4