底层提升函数们
公开(「引用类」于(「列」于「低层函数」))文言:提升:局部函数或内联为环,或单用而展开,或升为全局函数;末尾自调化为回跳;等值之链成派。汉语:把局部函数消掉:只被调用一次且不自调的展开进调用处;只被调用一次且自调都在尾位置的做成内联循环(共用外层函数的局部变量,因此可以捕获可变格);其余提升为全局函数,自由变量作为前置形参(不能是可变格)。全局函数里的自身尾调用改成回到函数起点的循环。连续的对同一变量的整数等值判断合成分派。
包说明.html模块 / 83
编译步骤/代码生成/底层后端/底层提升。豫
(「引用类」于(「列」于「低层函数」))文言:提升:局部函数或内联为环,或单用而展开,或升为全局函数;末尾自调化为回跳;等值之链成派。汉语:把局部函数消掉:只被调用一次且不自调的展开进调用处;只被调用一次且自调都在尾位置的做成内联循环(共用外层函数的局部变量,因此可以捕获可变格);其余提升为全局函数,自由变量作为前置形参(不能是可变格)。全局函数里的自身尾调用改成回到函数起点的循环。连续的对同一变量的整数等值判断合成分派。
化「字符串」而化化(「列」于「低层项」)而「低层项」而化「低层项」而「低层项」文言:改写对局部函数之调用。汉语:把所有 `局调 函 实参` 换成变换后的项;实参已先改写。
化(「列」于「字符串」)而化(「列」于「低层项」)而化「低层项」而「低层项」文言:函数展开:形参依次令为实参,而后其体。汉语:把一次调用展开成一串 `令`(保持实参求值顺序)。
化化「低层项」而(「或可有」于(「列」于「低层项」))而化「低层项」而「整数」文言:数被关注之调用。汉语:统计 `项` 中被 `选` 选中的调用个数。
化化「低层项」而(「或可有」于(「列」于「低层项」))而化「整数」而化「低层项」而「爻」文言:末位所调,皆为某自调乎。汉语:`选` 从一个项取出(若它是被关注的自调用)实参;判断 `项` 中的所有被关注调用是否都在尾位置。`个` 是要求的实参个数。
化化「低层项」而(「或可有」于(「列」于「低层项」))而化「字符串」而化「低层项」而「低层项」文言:尾位之自调,改为回跳。汉语:把尾位置上被关注的调用改成 `续 标 实参`。
化化「低层项」而(「或可有」于(「列」于「低层项」))而化「低层项」而「爻」文言:尾位有被关注之调用否。汉语:判断尾位置上是否存在被关注的调用。
化「低层项」而「爻」文言:凡新格者,令其名于格之集。汉语:值是 `底层_新格` 调用时,令绑定的变量是可变格。
化「字符串」而化(「列」于「字符串」)而化「低层项」而「低层项」文言:提升,自上而下:先定局部函数之归宿,再理其后。汉语:`基` 是当前全局函数名,`格们` 是作用域内的可变格变量名。处理 `局函 名 形参 体 余`:先提升体内更内层的局部函数;再按使用情况三选一(未使用则丢弃;单次调用且不自调则展开;单次调用且自调全为尾调则做成内联循环;否则提升为全局函数);然后把对它的调用在余式中改写完毕,才继续提升余式。
化「低层函数」而「低层函数」文言:全局函数中,末位自调化为回跳。汉语:若函数体里有尾位置的自身调用,则把体包成一个以形参为循环变量的循环,并把这些调用改成回跳。
化「低层函数」而(「列」于「低层函数」)文言:一函数及其所生之全局函数,皆已提升。汉语:提升一个全局函数:返回它自己与提升过程中产生的全局函数,都已把尾自调化为回跳。
化「低层项」而(「或可有」于(「字符串」合「整数」))文言:整数等值之链,合为分派。汉语:`若 变量 = 常量 则 甲 否则 若 同一变量 = 常量 …` 合成 `派`;先前的判断优先,故同键后者被舍。
化「整数」而化(「列」于(「整数」合「低层项」))而(「列」于(「整数」合「低层项」))暂无说明。
化「低层项」而「低层项」暂无说明。