1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

Add new R4RS-compliant syntax for keywords.

* read.c (scm_lreadr): Recognize `#:' as a prefix for keywords,
regardless of the setting of the `keywords' read option.
* kw.c (prin_kw): Print keywords using the `#:' syntax, so they
can be re-read no matter what the setting of the `keywords' read
option.
This commit is contained in:
Jim Blandy 1997-05-27 23:58:26 +00:00
parent 995685aa70
commit 50a095f1c8
2 changed files with 8 additions and 1 deletions

View file

@ -68,7 +68,7 @@ prin_kw (exp, port, pstate)
SCM port;
scm_print_state *pstate;
{
scm_gen_puts (scm_regular_string, ":", port);
scm_gen_puts (scm_regular_string, "#:", port);
scm_gen_puts((SCM_MB_STRINGP(SCM_CDR (exp))
? scm_mb_string
: scm_regular_string),

View file

@ -399,6 +399,13 @@ tryagain_no_flush_ws:
return SCM_MAKICHR (scm_charnums[c]);
scm_wta (SCM_UNDEFINED, "unknown # object: #\\", SCM_CHARS (*tok_buf));
/* #:SYMBOL is a syntax for keywords supported in all contexts. */
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));
default:
callshrp: