mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-12 06:41:13 +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:
parent
995685aa70
commit
50a095f1c8
2 changed files with 8 additions and 1 deletions
|
@ -68,7 +68,7 @@ prin_kw (exp, port, pstate)
|
||||||
SCM port;
|
SCM port;
|
||||||
scm_print_state *pstate;
|
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_gen_puts((SCM_MB_STRINGP(SCM_CDR (exp))
|
||||||
? scm_mb_string
|
? scm_mb_string
|
||||||
: scm_regular_string),
|
: scm_regular_string),
|
||||||
|
|
|
@ -399,6 +399,13 @@ tryagain_no_flush_ws:
|
||||||
return SCM_MAKICHR (scm_charnums[c]);
|
return SCM_MAKICHR (scm_charnums[c]);
|
||||||
scm_wta (SCM_UNDEFINED, "unknown # object: #\\", SCM_CHARS (*tok_buf));
|
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:
|
default:
|
||||||
callshrp:
|
callshrp:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue