This page is part of the web mail archives of SRFI 62 from before July 7th, 2015. The new archives for SRFI 62 contain all messages, not just those from before July 7th, 2015.
To begin with, I apologize for an over zealous response after misreading your revised proposal; which I misinterpreted as formalizing the treatment of sequential #;'s non-recursively (i.e. (#; #; a b c) -> (c)), which you've actually denoted as an error, which much better than not; but please let me try to propose a potentially somewhat simpler and cleaner similar approach. - It may be simplest to define comment's grammar to be fully consistent with the language's existing reader abbreviations who's scope is consistently bounded by the subsequent fully recursively parsed <S-EXP>. (very similar to your revised proposal, but without any recursive limit) Thereby: using {} to denote the lexical bound of reader command, which can't be determined until all subsequently encountered opened scopes are themselves delimited; first showing only reader quote abbreviations: input: '(''`(a ,@(list 1 2 3) b)) parsed: '{ ( '{ '{ `{ ( a ,@{ ( list 1 2 3 ) } b ) } } } ) } returns: (quote ( (quote (quote (qq (a (uqs (list 1 2 3)) b))))) Correspondingly, if comment (quote-comment for the sake of argument), were given the exact same recursive <s-exp> grammar scoping rules, the only difference would be that rather than using it's immediately following recursively parsed <s-exp> as it's argument, it removes it and itself from the parsed expression (i.e commented out): input: '(#;#;a b `#;,c d #;'e) parsed: '{ ( #;{ #;{ a } } b `{ #;{ ,{ c } } } d #;{ '{ e } } ) returns: (quote (b d)) Thereby things seem nice simple and symmetric; and to make things more ideally consistent, just as it's clear that commenting a quote expression effectively removes it, quoting an comment expression should be considered equivalent; thereby all quote forms (including quote-comment), return nothing if they have no/empty arguments (i.e. r5rs grammar "empty"). Thereby it basically falls out for free, that: (') -> ( '{ <empty> } ) => () As would: `(a ,b ,) -> '{(a ,{b} ,{ <empty> }) => (qq (a (uq b))) Thereby consistently eliminating otherwise needless nuisance errors for quotes with no arguments, which seems harmless, and would be consistent. Ultimately requiring only a few basic tweaks to scheme's grammar: #; [<s-exp>|<empty>] -> {comment [<s-exp>|<empty>]} => <empty> ['|`|,|,@] <empty> -> {quote/qq/uq/uqs <empty} => <empty> Where per r5rs, essentially <empty> is implied last in any list, or upon file/input termination (therefore should require no further tweaks). -paul-