5.10
“”(syntax object)是Racket编程语言构建其语言的基石。
5.10.1 ,卩?,?
“”其实就是通俗意义上的“代码”,而“代码”究其本质而言是封装了“词法信息”和“位置信息”的“数据”。“卩”(identifier)可以看作是“”的极简单特例。
卩为古活字
为新造字
卩:节的古字,本意是“瑞信,古代出使等用作凭证之物”,引申为“语法,包含了上下文信息的数据”;
厂:工厂,容器,内容。
5.10.2 位置信息:,、,,
为新造字
为新造字
为新造字
为新造字
为新造字
止:本意是“足”,在此为“地址”的意思;
:第几列,仿经字得造;
:第几行,仿纬字得造;
:第几位;
5.10.3 转化:,,、
“数据”我们用单字“文”来表示,此如?、?、?、句?、勺?等数据结构所构造出的数据都是“文”。 “文”添加上“词法信息”和“位置信息”就组成了“”,而“”剥离掉“词法信息”和“位置信息”就余下“文”了。
为新造字
为新造字
为新造字
为新造字
:+解各取偏旁得造;
:+各取偏旁得造;
:+文各取偏旁得造;
:文+各取偏旁得造;
5.10.4 基础例程
(require ming/racket/base) | package: ming |
word
word
word
卩? : 卩 + ? = identifier?
word
: elem + 地址,比如是文件路径 = syntax-source
word
: elem + 所在文件的具体哪一行(纬是横向的,参见“纬线”一词) = syntax-line
word
: elem + 所在文件的具体哪一列(经是竖向的,参见“经线”一词) = syntax-column
word
: elem + 所在文件的第几位 = syntax-position
word
: elem + 所占用的长度(从0算起) = syntax-span
word
: ? + s + y + n + t + a + x + - + o + r + i + g + i + n + a + l + ? = syntax-original?
word
?司 : ? + + 司 = syntax-source-module
word
word
: elem + 化 = syntax->list
word
: elem + 化文(将转化成文(原料数据)) = syntax->datum
word
: elem + 文化 = datum->syntax
word
: ? + s + y + n + t + a + x + - + b + i + n + d + i + n + g + - + s + e + t + ? = syntax-binding-set?
word
: ? + s + y + n + t + a + x + - + b + i + n + d + i + n + g + - + s + e + t = syntax-binding-set
word
: ? + s + y + n + t + a + x + - + b + i + n + d + i + n + g + - + s + e + t + - + > + s + y + n + t + a + x = syntax-binding-set->syntax
word
: ? + s + y + n + t + a + x + - + b + i + n + d + i + n + g + - + s + e + t + - + e + x + t + e + n + d = syntax-binding-set-extend
word
: ? + d + a + t + u + m + - + i + n + t + e + r + n + - + l + i + t + e + r + a + l = datum-intern-literal
word
: ? + s + y + n + t + a + x + - + s + h + i + f + t + - + p + h + a + s + e + - + l + e + v + e + l = syntax-shift-phase-level
word
: ? + g + e + n + e + r + a + t + e + - + t + e + m + p + o + r + a + r + i + e + s = generate-temporaries
word
: ? + i + d + e + n + t + i + f + i + e + r + - + p + r + u + n + e + - + l + e + x + i + c + a + l + - + c + o + n + t + e + x + t = identifier-prune-lexical-context
word
: ? + i + d + e + n + t + i + f + i + e + r + - + p + r + u + n + e + - + t + o + - + s + o + u + r + c + e + - + m + o + d + u + l + e = identifier-prune-to-source-module
word
: ? + s + y + n + t + a + x + - + r + e + c + e + r + t + i + f + y = syntax-recertify
word
: ? + s + y + n + t + a + x + - + d + e + b + u + g + - + i + n + f + o = syntax-debug-info