编译原理【1】概述:词法分析、语法分析、语义分析

什么是编译?

编译就是将高级语言程序转换成汇编语言程序/及其语言程序的过程。
在这里插入图片描述
编译,说白了就是翻译,对比精细的人工英译汉的步骤:

  1. 词法分析:分析词性:每个词属于名词?形容词?动词?介词…
  2. 语法分析:分析各种介词短语、名词短语、动词短语…
  3. 语义分析:以上两个步骤的意义就是为语义分析做铺垫,通过将语法展开成下图树的形式,可以最终根据根节点分析出整个句子的意思是什么。

编译的步骤也和人工翻译是一样的。

在这里插入图片描述


编译器的结构

在这里插入图片描述


词法分析

在这里插入图片描述1. 词法单元形式:二元组token:<种别码,属性值>
2. 对种别码的解释

  • 一词一码:就是说,每个不同的词分别使用一个种别码,比如:
    if: <IF, >
    program: <PROGRAM, >
    while: <WHILE, >

  • 多词一码:标识符是程序员编程时设置的。我们为不能枚举所有标识符,因此将所有标识符归为一个种别码。由于多个词对应一个种别码,因此在同一种别码间需要另外设置属性值来标识不同的属性:(变量名?数组名?常量?)或者(整型?浮点型?字符型?…)

在这里插入图片描述


语法分析

在这里插入图片描述解释:<D>是一条声明语句,<T>是数据类型,| 表示“或”的关系,<IDS>是Identify Sequence标识序列。对比下面的输入语句:
整条语句<D>: int a, b, c;
数据类型<T>: int
标识序列<IDS>:a, b, c;


语义分析

主要做两件事:收集标识符的属性信息 和 对语义的检查(检查合法性)
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值