Racket Libraries
5.1 
5.2 双 and 􏿴
5.3 􏻿
5.4 􏿰
5.5 
5.6 勺
5.7 
5.8 
5.9 􏺃
5.10 Conditionals
5.11 
5.12 
5.13 未分类
On this page:
5.9.1 􏺃,卩?,􏺃?
5.9.2 位置信息:􏹷,􏹸、􏹹,􏹾,􏹵
5.9.3 转化:􏹲,􏹩,􏹴、􏹳
5.9.4 基础例程
􏺃
􏺃?
卩?
􏹷
􏹸
􏹹
􏹾
􏹵
?syntax-original?
?􏺃司
􏹲
􏹩
􏹴
􏹳
?syntax-binding-set?
?syntax-binding-set
?syntax-binding-set->syntax
?syntax-binding-set-extend
?datum-intern-literal
?syntax-shift-phase-level
?generate-temporaries
?identifier-prune-lexical-context
?identifier-prune-to-source-module
?syntax-recertify
?syntax-debug-info
8.12

5.9 􏺃🔗

“􏺃”(syntax object)是Racket编程语言构建其语言的基石。

5.9.1 􏺃,卩?,􏺃?🔗


“􏺃”其实就是通俗意义上的“代码”,而“代码”究其本质而言是封装了“词法信息”和“位置信息”的“数据”。“卩”(identifier)可以看作是“􏺃”的极简单特例。

为古活字
􏺃为新造字
  • 的古字,本意是“瑞信,古代出使等用作凭证之物”,引申为“语法,包含了上下文信息的数据”;

  • :工厂,容器,内容。

Examples:
> (􏺃? #'(+ 1 2))

#t

> (􏺃? #'(+ 1 2))

#t

> (􏺃? #'1)

#t

> (卩? #'1)

#f

5.9.2 位置信息:􏹷,􏹸、􏹹,􏹾,􏹵🔗


“􏺃”中的“位置信息”我们用单字“元”来表示,“元”包括:“􏹷”(地址)、“􏹾”(位置)、“􏹹”(经度(第几行))、“􏹸”(纬度(第几列))、“􏹵”(所占用的空间(长度))。

􏹷为新造字
􏹹为新造字
􏹸为新造字
􏹾为新造字
􏹵为新造字
  • :本意是“足”,在此为“地址”的意思;

  • 􏹹:第几列,仿字得造;

  • 􏹸:第几行,仿字得造;

  • 􏹾:第几位;

Examples:
> (􏹷 #'a)

'eval

> (􏹹 #'a)

0

> (􏹸 #'a)

3

> (􏹾 #'a)

4

> (􏹵 #'a)

1

5.9.3 转化:􏹲,􏹩,􏹴、􏹳🔗


“数据”我们用单字“文”来表示,此如􏿴?􏻿?􏿰?句?勺?等数据结构所构造出的数据都是“文”。 “文”添加上“词法信息”和“位置信息”就组成了“􏺃”,而“􏺃”剥离掉“词法信息”和“位置信息”就余下“文”了。

􏹲为新造字
􏹩为新造字
􏹴为新造字
􏹳为新造字
  • 􏹲􏺃+各取偏旁得造;

  • 􏹩􏺃+􏿴各取偏旁得造;

  • 􏹴􏺃+各取偏旁得造;

  • 􏹴+􏺃各取偏旁得造;

另见:􏼩􏼳􏼪􏼲

Examples:
> (􏹲 #'a)

'a

> (􏹲 #'(a b c))

'(#<syntax:eval:2:0 a> #<syntax:eval:2:0 b> #<syntax:eval:2:0 c>)

> (􏹩 #'(a b c))

'(#<syntax:eval:3:0 a> #<syntax:eval:3:0 b> #<syntax:eval:3:0 c>)

> (􏹴 #'(a b c))

'(a b c)

> (􏹳 #f '(a b c))

#<syntax (a b c)>

5.9.4 基础例程🔗

汉字化

􏺃 : 生成代码 【MORE】 = syntax

汉字化

􏺃? : 代码(包含了词法信息和位置信息的数据) 【MORE】 = syntax?

汉字化

卩? : 【MORE】 = identifier?

汉字化

􏹷 : 地址,比如是文件路径 【MORE】 = syntax-source

汉字化

􏹸 : 所在文件的具体哪一行(纬是横向的,参见“纬线”一词) 【MORE】 = syntax-line

汉字化

􏹹 : 所在文件的具体哪一列(经是竖向的,参见“经线”一词) 【MORE】 = syntax-column

汉字化

􏹾 : 所在文件的第几位 【MORE】 = syntax-position

汉字化

􏹵 : 所占用的长度(从0算起) 【MORE】 = syntax-span

汉字化

?syntax-original? : 【MORE】 = syntax-original?

汉字化

?􏺃司 : 【MORE】 = syntax-source-module

汉字化

􏹲 : 以解开􏺃的方式转化成文((原料数据)) 【MORE】 = syntax-e

汉字化

􏹩 : 􏺃化􏿴 【MORE】 = syntax->list

汉字化

􏹴 : 􏺃化文(将􏺃转化成文(原料数据)) 【MORE】 = syntax->datum

汉字化

􏹳 : 文化􏺃 【MORE】 = datum->syntax

汉字化

?syntax-binding-set? : 【MORE】 = syntax-binding-set?

汉字化

?syntax-binding-set : 【MORE】 = syntax-binding-set

汉字化

?syntax-binding-set->syntax : 【MORE】

 = syntax-binding-set->syntax

汉字化

?syntax-binding-set-extend : 【MORE】 = syntax-binding-set-extend

汉字化

?datum-intern-literal : 【MORE】 = datum-intern-literal

汉字化

?syntax-shift-phase-level : 【MORE】 = syntax-shift-phase-level

汉字化

?generate-temporaries : 【MORE】 = generate-temporaries

汉字化

?identifier-prune-lexical-context : 【MORE】

 = identifier-prune-lexical-context

汉字化

?identifier-prune-to-source-module : 【MORE】

 = identifier-prune-to-source-module

汉字化

?syntax-recertify : 【MORE】 = syntax-recertify

汉字化

?syntax-debug-info : 【MORE】 = syntax-debug-info