编译原理入门(五)——语义分析简介

本文深入探讨了编译过程中的语义分析阶段,详细解释了标识符属性信息的收集与存储,以及如何通过符号表进行语义检查,防止变量未声明使用、类型不匹配等问题。

    前面的两篇博文介绍了词法分析、语法分析,本篇博文将介绍语义分析。

    语义分析

    语义分析是编译的第三步,它的主要任务是:1.收集标识符的属性信息信息,如收集种属信息(简单变量、复合变量(数组等)、过程),类型信息,存储位置,长度,值,作用域,参数,返回值等。在语义分析阶段收集的这些信息将会存放在符号表的数据结构中。

     符号表的每一条记录对应一个标识符,符号表的每一个字段表示标识符的属性信息。下图中的S、I、M、P所在的部分为字符串表,每一个符号表通常都会带着一个字符串表,此表用来存放标识符的名称和长度,也就是符号表中的NAME字符部分。NAME字段被分为两部分,举个例子,标识符SIMPLE表示一个标识符的名,NAME的第一部分便是指向这个标识符名的起始位置,第二部分表示该标识符的长度,这样便能找出每一个标识符的名。(标识符的名可以理解为我们定义的变量名)

   

   上面的内容说的是语义分析的第一个任务,语义分析还有第二个任务,便是进行语义的检查,如常见的错误:变量或过程未经声明就使用、运算分量类型不匹配(例如字符串类型和整型相加,会对其进行转换)、变量名或过程名重复使用等。

   好了,语义分析的简介就到这里。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值