编译步骤/语法分析/词法解析。豫
yuyan · 236 行 · 12465 字节 · 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 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
寻观「标准库」之书。
寻观「编译器核心」之「编译步骤」之「语法分析」之「具体语法树」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。
寻观「编译器核心」之「编译数据」之「编译配置」之「编译期输出」之书。
「:因为cps有bug,原因:unification的时候会生成语法分析树而非结构语法之语法分析树的参数:」
「: 语法分析树即结构语法之语法分析树也。 :」
「令符」立「元类型」也。
「令符开始」立「令符」也。
「令符表示」乃化「令符」而「字符串」也。
「令符表示」者会「符」而
鉴「符」而
有「令符开始」则『(开始符)』
或有「其他」则『未有25』
也。
「解析转义序列」乃化「字符串」而「字符串」也。
「解析转义序列」者会「甲」而
鉴「甲」而
有『「:』:」』则『「:』:」』
或有『「:「::」』则『「:「::」』
或有『换行』则『「:换行:」』
或有『制表』则『「:制表:」』
或有「其他」则
「发生事故」于『无法识别的转义序列:(开始)』附「甲」附『(结束)』
也。
「扫描词法转义序列」乃
化(「列」于「字符串」)而
(「字符串」合(「列」于「字符串」))
也。
「扫描词法转义序列」者会「输入」而
递归虑「扫描」其化「字符串」而化(「列」于「字符串」)而(「字符串」合(「列」于「字符串」))者
会「当前序列」而会「剩余输入」而
鉴「剩余输入」而
有「罄」则「发生事故」于『未关闭的字符串转义序列』
或有(「缀」于『:』于(「缀」于『」』于「输入尾」))则
(「解析转义序列」于「当前序列」)与「输入尾」
或有(「缀」于「当前字符」于「输入尾」)则
「扫描」于(「当前序列」附「当前字符」)于「输入尾」
而
「扫描」于『』于「输入」
也。
「:文言:串亦积片,末乃合之。汉语:字符串与标识符采用片段累积,保证长源码快照的线性扫描成本。:」
「扫描词法字符串」乃
化(「列」于「字符串」)而
(「表达式」合(「列」于「字符串」))
也。
「扫描词法字符串」者会「输入」而
递归虑「扫描」其化(「列」于「字符串」)而化(「列」于「字符串」)而(「表达式」合(「列」于「字符串」))者
会「当前串」而会「剩余输入」而
鉴「剩余输入」而
有「罄」则「发生事故」于『未关闭的字符串』
或有(「缀」于『「:』:」』于「输入尾」)则
(「式节点」于(「字符串节点」于(「串组合并」于(「反转」授以「字符串」于「当前串」)))于「罄」)
与「输入尾」
或有(「缀」于『「』于(「缀」于『:』于「输入尾」))
则(
虑「转义及后」者(「扫描词法转义序列」于「输入尾」)而
「扫描」
于(「缀」于(「转义及后」中「零」)于「当前串」)
于(「转义及后」中「一」)
)
或有(「缀」于「当前字符」于「输入尾」)则
「扫描」于(「缀」于「当前字符」于「当前串」)于「输入尾」
而
「扫描」于「罄」于「输入」
也。
「扫描词法注释」乃
化(「列」于「字符串」)而
(「字符串」合(「列」于「字符串」)合「爻」)
也。 「:注释文字、剩余输入、是否含换行;文字不含最外层定界符。:」
「扫描词法注释」者会「输入」而
递归虑「扫描」其化「字符串」而化「整数」而化「爻」而化(「列」于「字符串」)而(「字符串」合(「列」于「字符串」)合
「爻」)者
会「当前文字」而会「嵌套深度」而会「含换行」而会「剩余输入」而
鉴「剩余输入」而
有「罄」则「发生事故」
于『未关闭的注释』
或有(「缀」于『「』于(「缀」于『:』于「输入尾」))则
「扫描」
于(「当前文字」附『「』附『:』)
于(「加」于「嵌套深度」于「一」)
于「含换行」
于「输入尾」
或有(「缀」于『:』于(「缀」于『」』于「输入尾」))则
若(「等」于「嵌套深度」于「零」)
则
「当前文字」与「输入尾」与「含换行」
否则
「扫描」
于(「当前文字」附『:』附『」』)
于(「减」于「嵌套深度」于「一」)
于「含换行」
于
「输入尾」
或有(「缀」于『「:换行:」』于「输入尾」)则
「扫描」
于(「当前文字」附『「:换行:」』)
于「嵌套深度」
于「阳」于「输入尾」
或有(「缀」于「其他」于「输入尾」)则
「扫描」
于(「当前文字」附「其他」)
于「嵌套深度」于「含换行」于「输入尾」
而
「扫描」于『』于「零」于「阴」于「输入」
也。
「扫描词法标识符」乃
化(「列」于「字符串」)而
(「表达式」合(「列」于「字符串」))
也。
「扫描词法标识符」者会「输入」而
递归虑「扫描」其化(「列」于「字符串」)而化(「列」于「字符串」)而(「表达式」合(「列」于「字符串」))者
会「当前名称」而会「剩余输入」而
鉴「剩余输入」而
有「罄」则「发生事故」于『未关闭的标识符』
或有(「缀」于『」』于「输入尾」)则
(「自由变量」于(「串组合并」于(「反转」授以「字符串」于「当前名称」)))
与「输入尾」
或有(「缀」于「当前字符」于「输入尾」)则
「扫描」于(「缀」于「当前字符」于「当前名称」)于「输入尾」
而
「扫描」于「罄」于「输入」
也。
「栈素」即(「令符」
合(「列」于「表达式」) 「:文言:逆存词,末乃反之。汉语:令牌逆序积累,完成时反转,避免反复复制前缀。:」
)也。
「词法栈素表示」乃化「栈素」而「字符串」也。
「词法栈素表示」者会「素」而
(「令符表示」于(「素」中「零」))附『++』附(「表达式列表示」于(「素」中「一」))
也。
「词法解析」乃
化(「列」于「栈素」)而
化(「列」于「字符串」) 「: 输入 :」而
化「爻」 「:当前行是否已有语法元素:」而
「列」于「表达式」
也。
「词法解析」者会「栈」而会「输入」而会「行中已有元素」而
虑「递归」者「词法解析」而
虑「无」者
「非常详细调试打印行」于(会「无」而『词法解析,【输入】:』附(「间合」于『·』于「输入」)附
『 || 【栈】:』附(「间合」于『|||||』于((「态射」)于「栈」于「词法栈素表示」)))而
鉴「栈」与「输入」而
「:开始 :」
有「罄」与「乙丑」则「递归」
于((「列」【(「栈素」也「令符开始」与「罄」)】))
于「乙丑」于「阴」
或有((「列」【(「令符开始」与「当前所有」)】))与「罄」
「:结束 :」
则(「反转」授以「表达式」于「当前所有」)
「:注释:」
或有(「缀」于(「令符开始」与「前输入」)于「栈尾」)与(「缀」于『「』于(「缀」于『:』于「输入尾」))
则(
虑「注释及后」者(「扫描词法注释」于「输入尾」)而
虑「方向」者(若「行中已有元素」则「后置注释」否则「前置注释」)
而
虑「新输入」者
(「缀」于(「式节点」于(「词法注释节点」于(「注释及后」中「零」)于「方向」)于「罄」)于「前输入」)
而
「递归」
于(「缀」于(「栈素」也「令符开始」与「新输入」)于「栈尾」)
于(「注释及后」中「一」)
于(若(「注释及后」中「二」)则「阴」否则「行中已有元素」)
)
「:字符串:」
或有(「缀」于(「令符开始」与「前输入」)于「栈尾」)与(「缀」于『『』于「输入尾」)
则(
虑「字符串及后」者(「扫描词法字符串」于「输入尾」)而
「递归」
于(「缀」于(「栈素」也「令符开始」与(「缀」于(「字符串及后」中「零」)于「前输入」))于「栈尾」)
于(「字符串及后」中「一」)于「阳」
)
「:标识符:」
或有(「缀」于(「令符开始」与「前输入」)于「栈尾」)与(「缀」于『「』于「输入尾」)
则(
虑「标识符及后」者(「扫描词法标识符」于「输入尾」)而
「递归」
于(「缀」于(「栈素」也「令符开始」与(「缀」于(「标识符及后」中「零」)于「前输入」))于「栈尾」)
于(「标识符及后」中「一」)于「阳」
)
「: 跳过空白 :」
或有(「缀」于(「令符开始」与「当前输入」)于「栈尾」)与(「缀」于『「:换行:」』于「输入尾」)
则
「递归」
于(「缀」于(「栈素」也「令符开始」与「当前输入」)于「栈尾」)
于「输入尾」于「阴」
或有(「缀」于(「令符开始」与「当前输入」)于「栈尾」)与(「缀」于『「:制表:」』于「输入尾」)
则
「递归」
于(「缀」于(「栈素」也「令符开始」与「当前输入」)于「栈尾」)
于「输入尾」于「行中已有元素」
或有(「缀」于(「令符开始」与「当前输入」)于「栈尾」)与(「缀」于『 』于「输入尾」)
则
「递归」
于(「缀」于(「栈素」也「令符开始」与「当前输入」)于「栈尾」)
于「输入尾」
于「行中已有元素」
「: 普通字符 :」
或有(「缀」于(「令符开始」与「当前输入」)于「栈尾」)与(「缀」于「其他」于「输入尾」)
则
「递归」
于(「缀」
于(「栈素」也「令符开始」与(「缀」于(「式节点」于(「具体字符节点」于「其他」)于「罄」)于「当前输入」))
于「栈尾」)
于「输入尾」
于「阳」
或有(「缀」于(「令符开始」与「当前输入」)于「栈尾」)与「输入尾」
则
「发生事故」
于『未关闭的开始符号:』附(「令符表示」于「令符开始」)附『「:换行:」剩余输入:』附(「合并」于「输入尾」)附
『当前输入:』附(「表达式列表示」于「当前输入」)
也。
「词法解析顶层」乃化「字符串」而「列」于「表达式」也。
「词法解析顶层」者会「内容串」而
虑「字符们」者「获取字符」于「内容串」而
(「词法解析」于「罄」于「字符们」于「阴」)
也。