编译原理概述

编译器原理

词法分析器

语法分析器

语义分析器

中间代码生成

  • 符号表
  • 独立机器的代码优化器
  • 代码生成器
  • 依赖于机器的代码优化器
  • 目标机器代码
position = inital + rate * 60
name value
position ...
inital ...
rate ...

<id,1><=><id,2><+><id,3><><60>*

表达式的语法特征

  • 任何一个标识符都是表达式
  • 任何一个数都是表达式
  • 如果e1和e2都是表达式那么
    • e1+e2
    • e1*e2
    • (e1)

例:position = inital + rate * 60

initial+rate60 分析树*

graph TD;
    表达式-->表达式A;
    表达式A-->initial;
    表达式-->+;
    表达式-->表达式B;
    表达式B-->表达式B1;
    表达式B1-->rate;
    表达式B-->*;
    表达式B-->表达式B2;
    表达式B2-->数60;
    

<id,1><=><id,2><+><id,3><><60>*

  • 语法分析器语法树

    graph TD;
       =-->id,1;
       =-->+;
       +-->id,2;
       +-->*;
       *-->id,3;
       *-->inttofloat;
       inttofloat-->60;
    
  • 中间代码生成器

t1 = inttofloat(60)
t2 = id3 * t1
t3 = id2 + t2
id1 = t3
  • 代码优化器
t1 = id3 * 60
id1 = id2 + t1
  • 代码生成器
MOVF id3,R2
MULF #60,R2
MOVF id2,R1
ADDF R2,R1
MOVF R1,id1
概述
  • 解释器

    • 解释器不生成目标代码,而是直接执行源程序所指定的运算
    • 解释器也需要对源程序进行词法,语法,语义
  • 符号表管理 – 记录源程序中使用的变量的名字,收集各种属性

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 心血来潮第二波~ 这次参照了Stanford的课啦:https://courses.edx.org/courses...
    木小易Ying阅读 5,046评论 4 1
  • 语言处理器术语解释:源语言:等待被转换的语言.目标语言:转换后输出的语言.编译器:一次将所有源语言转换成目标语言的...
    卡布奇洛猫阅读 4,935评论 0 0
  • 编译原理复习 第1章 介绍 1.1 编译器 一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并...
    pshawn阅读 7,632评论 0 2
  • 大学期间的笔记补全。编译原理内容太多分几次。课本《编译原理》第三版,陈火旺等编著。笔记总目录:一、引论二、高级语言...
    嘟噜嘟噜啪阅读 4,852评论 0 0
  • 链接地址:https://www.tutorialspoint.com/compiler_design/compi...
    dannyvi阅读 10,240评论 1 12

友情链接更多精彩内容