必要性分类语义错误功能1.1语义分析的必要性语法和语义的区别 语法:关于什么样的字符串才是该语言在组成结构上合法的程序的法则。语义:关于结构上合法的程序的意义法则。1.2语义分析的分类语义种类指称语义操作语义公理语义静态语义:在编译阶段(从程序文本上)可以检查的语义。动态语义:通过程序的执行才能检查的语义。1.3语义错误1.各种条件表达式的类型是不是boolean型?2.运算符的分量的类型是否相容?3.赋值语句的左右部的类型是否相容?4.形参和实参的类型是否相容?5.下标表达式的类型是否为所允许的类型?6.函数说明中的函数类型和返回值的类型是否一致?7.VE中的V是不是变量,而且是数组类型?8.V.id中的V是不是变量,而且是记录类型?id是不是该记录类型中的域名?9.y+f()中的f是不是函数名?形参个数和实参个数是否一致?10.p()语句中的p是不是过程名?形参个数和实参个数是否一致?11.V中的V是不是指针或文件变量?12.变体记录中表示情形的常量是否为合法类型?13.子界类型中的下界和上界类型是否相容?下界是否小于等于上界?语义错误 cont.1.每个使用性标识符是否都有声明?