编译原理开坑中……

编译原理

简介

  • 编译器和解释器

    /*
    
    input --> C --> output  可执行的程序       offline
    
    input --> I --> output 结果           online
    
  • /* 编译器的结构
    
    I --> 前端 --> 后端 --> O
    
    详细:
    
    I --> 【词法 --> 语法】-->【指令生成 --> 优化】 --> O
    

  • 栈式计算机

    /* 
    
    两条指令 push add
    
    伪代码
    // push 是压栈的意思
    
    push 1
    push 5
    push 6
    
    add {
      x = pop();
      y = pop();
      z = x + y;
      push z
    }
    
    
    
    任务:编译程序 1 + 2 + 3 到栈式计算机
    
    “1 + 2 + 3” --> 语法分析 --> (+)  --> 代码生成(树的 post order) --> stack
                            /    \
                           (+)   (3)
                          /   \
                          1    2
    
      n 代表数字
    (1)   n: push n
     (2)   +: add
    
    
    
     总结:
      --> 前端 --> 语法树 --> 后端 --> 代码生成
    
      优化:
    
      --> 前端 --> 语法树1 --> 优化 --> 语法树2 -->后端 -->
    
    

猜你喜欢

转载自www.cnblogs.com/owenqing/p/10597642.html