少し前に #scheme で指摘されたのですが、R6RS では "Lexical syntax" の節(4.2.1)で
<Identifier>s, ., <number>s, <character>s, and <boolean>s, must be terminated by a <delimiter> or by the end of the input.
とうたわれています。これと「<delimiter>
に #\,
が含まれていない」ことにより、
`(10,x)
は(x がどうであれ)lexical error にならなければなりません。つまり
`(10 ,x)
とは区別されるのです。実際、ikarus では前者に対して '"10," is not a nice number' という字句上のエラーを上げるそうです。一方、最近イチオシの ypsilon 0.9.5 では両者を区別していないのでまずいです。
この仕様に合わせるためには、字句上のエラーとして捕捉するよう EBNF で書かれた字句の規則とは別にチェックをしなければならない、というのが厄介なところです。
参考