The patch below (<[EMAIL PROTECTED]>) also failed to live through the summer. ;-)
Is it acceptable? Thanks, Ludovic. [EMAIL PROTECTED] (Ludovic Courtès) writes: > Hi, > > The patch below (1) fixes `#! ... !#' block comments and (2) allows to > override them with `read-hash-extend'. > > > (1) This example makes Guile 1.6 and the current Guile 1.7 hang (for > some reason which I did not track down): > > guile> #! this is a comment !# (+ 2 2) > [wait forever] > > Once the patch is applied: > > guile> #! this is a comment !# (+ 2 2) > 4 > > I guess block comments have not been widely used over the past > years. ;-) > > > (2) It makes it possible to discard the block comment syntax with > `read-hash-extend'. The example below allows to recognize the > DSSSL keyword syntax[*], at the expense of losing the block > comment syntax: > > (read-hash-extend #\! (lambda (chr port) > (symbol->keyword (read port)))) > > I find this particular example useful since, even if DSSSL is > apparently not widely used, other Scheme implementations such as > Bigloo do support this syntax, and allowing such extensions is what > `read-hash-extend' is for. > > > Comments? > > Thanks, > Ludovic. > > [*] http://www.ibiblio.org/pub/sun-info/standards/dsssl/dssslo/do960816.htm > > > 2005-06-16 Ludovic Courtès <[EMAIL PROTECTED]> > > * read.c (scm_flush_ws): Do not handle `#! .. !#' block > comments here so that the behavior of `#!' can be extended with > `read-hash-extend'. > (scm_lreadr): Handle the `#!' case here instead of in > `scm_flush_ws ()' after making sure that no hash reader > extension exists for `!'. Jump to `tryagain' after call to > `skip_scsh_block_comment ()', which fixes a bug in block > comments handling (where Guile would hang). > > > > Index: read.c > =================================================================== > RCS file: /cvsroot/guile/guile/guile-core/libguile/read.c,v > retrieving revision 1.117 > diff -u -B -b -p -r1.117 read.c > --- read.c 23 May 2005 19:57:21 -0000 1.117 > +++ read.c 16 Jun 2005 09:13:28 -0000 > @@ -227,9 +227,6 @@ scm_flush_ws (SCM port, const char *eofe > case EOF: > eoferr = "read_sharp"; > goto goteof; > - case '!': > - skip_scsh_block_comment (port); > - break; > default: > scm_ungetc (c, port); > return '#'; > @@ -478,9 +475,10 @@ scm_lreadr (SCM *tok_buf, SCM port, SCM > goto num; > > case '!': > - /* should never happen, #!...!# block comments are skipped > - over in scm_flush_ws. */ > - abort (); > + /* Only handle `#! ... !#' block comments if no user extension was > + defined for `!' using `read-hash-extend'. */ > + skip_scsh_block_comment (port); > + goto tryagain; > > case '*': > j = scm_read_token (c, tok_buf, port, 0); > > > > _______________________________________________ > Guile-devel mailing list > Guile-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/guile-devel _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel