230
社区成员




课程信息:张宏波:基础软件理论与实践
第一节第6页讲到编译阶段:
在讨论中,大家对上述术语的翻译有需求,这些翻译合适么?:
Lexing
: 词法分析Parsing
: 语法分析Abstract Syntax Tree
: 抽象语法树Semantics Analysis
: 语义分析Typed Abstract Syntax Tree
: 有类型抽象语法树Lowering
: ?,@千里冰封 认为可以翻译为「转译」,但是感觉太普通了,根据这里的bobzhang1988的评论,可以看到它的作用之一:第一个eval 是递归调用,通过lowering, 后续解释执行就不需要递归了(隐式的消耗宿主语言的栈)
Multi-level IR
: 多级别中间表示Linearization
: 线性化Optimization
: 优化IR
: 中间表示,全称intermediate representation
,也叫中间代码Code Generation
: 代码生成Machine Code
: 机器码--end--
萬種編碼皆返璞歸真。
lowering叫“初次返璞”
Linearization叫“線性返璞”
这三个图实际上是上面的顺序
这两张图里的定义,Let 是比较不容易直接读懂的,除非习惯了。
一个可能表达式解析例子: