编译步骤/优化/前函数续延化变换。豫
yuyan · 169 行 · 9005 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
寻观「标准库」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「命名环境术」之书。
寻观「编译器核心」之「顺序标识符」之「顺序标识符」之书。
寻观「编译器核心」之「编译数据」之「操作符」之「操作符数据结构」之书。
「:擦除所有结构类型:」
「尝试函数续延化」乃
化「字符串」 「:函数名:」而
化(化「表达式」而「表达式」) 「:变换后的函数调用:」而
化「表达式」 「:待变换式:」而
(「或可有」于「表达式」) 「:如果变换失败,则可无,如果成功变换或者没有变换,则返回可有变换后的式子:」
也。
「:换言之,返回可以即代表函数可以被转换成续延:」
「尝试函数续延化」者会「函数名」而会「变换操作」而会「式」而
鉴「式」而
有(「式节点」
于「函数调用」
于((「列」【
(「自由变量」于「调用函数名」),
(「式节点」于(「参数节点」于「函形」)于((「列」【「参数式」】)))
】)
))则(
若((「自由变量在式出现」于「函数名」于「参数式」))
则
(「可无」授以「表达式」)
否则
((
若(「串相等」于「调用函数名」于「函数名」)
则
(「可有」于(「变换操作」于「参数式」))
否则
(「可有」于(「式」))
)
)
)
或有(「式节点」于「爻分支节点」于(「列」【「分析式」,「阳式」,「阴式」】))则(
若
((「自由变量在式出现」于「函数名」于「分析式」))
则
(「可无」授以「表达式」)
否则
(
鉴(「尝试函数续延化」于「函数名」于「变换操作」于「阳式」)而
有「可无」则(「可无」授以「表达式」)
或有(「可有」于「后阳式」)则(
鉴(「尝试函数续延化」于「函数名」于「变换操作」于「阴式」)而
有「可无」则(「可无」授以「表达式」)
或有(「可有」于「后阴式」)则
(「可有」于(「式节点」于「爻分支节点」于(「列」【「分析式」,「后阳式」,「后阴式」】)))
)
)
)
或有(「式节点」于「内联虑」于((「列」【「当前式」,「后式」】)))则(
若((「自由变量在式出现」于「函数名」于「当前式」))
则
(「可无」授以「表达式」)
否则
(「解构抽象不重复名并继续」
于((「列」【「函数名」】))
于「后式」
于(会「绑定名」而会「后后式」而
鉴(「尝试函数续延化」于「函数名」于「变换操作」于「后后式」)而
有「可无」则(「可无」授以「表达式」)
或有(「可有」于「后后后式」)则(「可有」
于(「式节点」于「内联虑」于((「列」【「当前式」,(「进行抽象」于「绑定名」于「后后后式」)】))))))
)
或有「其他」则
(若((「自由变量在式出现」于「函数名」于「式」))则(「可无」授以「表达式」)否则(「可有」于「式」))
也。
「函数续延化变换」乃
化「爻」 「:可以不可以变换:」而
化「表达式」而
「表达式」 「:标注后的类和物:」
也。
「函数续延化变换」者会「可以变换」而会「式」而
虑「递归」者「函数续延化变换」而
虑「结果」者
(
鉴「式」而
有(「式节点」
于「内联虑」
于((「列」【(「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【「拉参」】))),「后式」】)))则(
若(「可以变换」)
则
(
虑「续延标签」者「下个字符序数」于『续延化标签』而
「解构抽象并继续」
于「后式」
于(会「函数名」而会「后后式」而
虑「可能后后后式」者
(「尝试函数续延化」
于「函数名」
于(会「参数式」而(「式节点」于(「函数调用续延」于「续延标签」)于((「列」【「参数式」】))))
于
「后后式」)而
鉴「可能后后后式」而
有「可无」则(「式节点」
于「内联虑」
于((「列」【
(「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【(「递归」于「阳」于「拉参」)】))),
(「递归」于「可以变换」于「后式」)
】)))
或有(「可有」于「后后后式」)
则
(
虑「无」者
(若「自由变量在式出现」于「函数名」于「后后后式」则「发生事故」于『不应该出现90』
否则
「元」)
而
(「式节点」
于「顺序执行节点」
于((「列」【
(「式节点」
于(「拉姆达抽象续延」于「续延标签」)
于((「列」【(「递归」于「阳」于「拉参」)】))),
((「递归」于「可以变换」于(「后后后式」)))
】)))
))
)
否则
((「式节点」
于「内联虑」
于((「列」【
(「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【(「递归」于「阳」于「拉参」)】))),
(「递归」于「可以变换」于「后式」)
】)))
)
)
或有(「式节点」于「爻分支节点」于(「列」【「当前式」,「阳式」,「阴式」】))
则((「式节点」
于「爻分支节点」
于(「列」【
「递归」于「阴」于「当前式」,
「递归」于「可以变换」于「阳式」,
「递归」于「可以变换」于「阴式」
】))
)
或有(「式节点」于「内联虑」于((「列」【「当前式」,「后式」】)))则((「式节点」
于「内联虑」
于((「列」【(「递归」于「阴」于「当前式」),(「递归」于「可以变换」于「后式」)】)))
)
或有(「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【「抽象体」】)))则
((「式节点」于(「拉姆达抽象」于「拉形」)于((「列」【(「递归」于「阳」于「抽象体」)】))))
或有(「绑定」于「名」于「下式」)则
(「抽象表达式操作」于「式」于(会「内式」而「递归」于「可以变换」于「内式」))
或有「其他」则
「表达式统一操作」于(会「内式」而「递归」于「阴」于「内式」)于「式」
)而
虑「无」者
(「编译调试打印行」
于『contify_result』
于(会「无」而
『函数续延化变换,输入:』附(「表达式表示」于「式」)附『。,,,,输出:』附(「表达式表示」于「结果」)))
而
「结果」
也。
「函数续延化变换顶层」乃化「表达式」而「表达式」也。
「函数续延化变换顶层」者会「式」而
「函数续延化变换」于「阴」于「式」
也。