LP源码文本与来源范围[#46]

(language scribble source)的source-text与source-range在宏展开期间提供原文和半开范围。范围含一基行列与字符偏移;tab列遵循Guile规则,不能把列号当字符偏移。

source-text保留表达式内部的注释与排版,可能包含at-exp的 转义前缀,LP展示去掉该前缀。语法对象的起始位置通过当前求值的局部范围表解析,原文应在展开期间取出保存。缺少范围时使用pretty-print;表达式外的注释不自动归入代码。

Scribble保留普通Scheme语法,支持dotted pair、rest参数和宏省略号;这不等于LP片段接口接受所有形式。LP的make-program仍要求片段由完整define组成。