编译数据/操作符/操作符数据结构。豫
yuyan · 79 行 · 4185 字节 · 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
寻观「标准库」之书。
寻观「编译器核心」之「编译数据」之「抽象绑定树结构」之「抽象语法树」之「总集」之书。
寻观「编译器核心」之「顺序标识符」之「顺序标识符」之书。
「条目」立「元类型」也。
「本地条目」立化「字符串」而化「表达式」而「条目」也。
「文件定义条目」立化「字符串」而化「字符串」而化「表达式」而化「表达式」而「条目」也。
「命名环境」即「列」于「条目」也。
「操作符」立「元类型」也。
「优先级关系」立「元类型」也。
「左规约」立「优先级关系」也。
「右规约」立「优先级关系」也。
「操作符集」即「列」于「操作符」也。
「语义标记种类」立「元类型」也。
「结构操作符标记」立「语义标记种类」也。
「类型操作符标记」立「语义标记种类」也。
「控制操作符标记」立「语义标记种类」也。
「普通操作符标记」立「语义标记种类」也。
「内建类型标记」立「语义标记种类」也。
「内建函数标记」立「语义标记种类」也。
「内建常量标记」立「语义标记种类」也。
「绑定标识符标记」立「语义标记种类」也。
「引用标识符标记」立「语义标记种类」也。
「数值标记」立「语义标记种类」也。
「字符串标记」立「语义标记种类」也。
「注释标记」立「语义标记种类」也。
「结构终止符标记」立「语义标记种类」也。
「语义标记草稿」立「元类型」也。
「构造语义标记草稿」立化「语义标记种类」而化「字符串」而「语义标记草稿」也。
「栈素」立「元类型」也。
「: 栈关键字立化组件而栈素也。 :」
「:一个栈操作符里有多个可能的操作符匹配是优化之一,针对以下的情况:
我们有如下操作符
甲〇乙
甲〇丙
甲〇丁
假设给出如下输入:
甲(巨大的计算消耗)乙
如果甲有三种可能,因为我们是从左往右解析,巨大的计算消耗会被解析三次,之后看到乙的时候,我们才能确定是哪一个甲
可有避免的话,是很大的性能提升
:」
「栈操作符」立化(「列」于(「操作符」合「整数」))而化「字符串」而「栈素」也。 「:整数字符串组件的序号;字符串是此处源码关键词。:」
「栈绑定」立化「字符串」而化(「列」于「字符串」) 「:前置注释:」而
化(「列」于「字符串」) 「:后置注释:」而
「栈素」也。
「: 栈树立化分析树而栈素也。 纯分析树 :」
「栈式」立化「表达式」而化(「列」于「语义标记草稿」)而「栈素」也。 「:纯分析树及其已确认的语义标记:」
「栈文件结尾」立「栈素」也。 「:EOF:」
「组件」立「元类型」也。
「字符串组件」立化「字符串」而「组件」也。
「元素组件」立「组件」也。
「绑定组件」立「组件」也。
「构造操作符」立化(「列」于「组件」) 「:name components:」而
化「整数」 「:uid:」而
化(化「字符串」 「:当前文件名:」而
化(「列」于「表达式」)而「或可有」
于「表达式」
「:
如果传入的组件不符合要求 (例如模式匹配分支合并需要固定的格式),可以返回可无,
其他正常情况下请直接抛出异常(例如传入的参数数量不正确)
:」
) 「:elaborator,参数以正常顺序传入:」
而化「字符串」 「:名称,用户必须可用此名指代该操作符:」而
「操作符」也。
「结构投影符标号」者(「整数」也(「行」于「下个序数」))也。
「函数调用操作符标号」者(「整数」也(「行」于「下个序数」))也。