您的位置:首页 > 其它

编译原理 —— 语义分析

2019-02-03 11:17 120 查看

分析语句和声明是如何构成程序的

收集标识符的属性信息

  • 种属 简单变量
  • 复合变量
  • 过程
  • 类型
      整型
    • 实型
    • 字符型
    • 布尔型
    • 指针型
  • 存储位置、长度
  • 作用域
  • 参数和返回值信息
  • 使用符号表字符串表来存储这些信息

    符号表中Name字段为什么要设计字符串表,而不是将标识符直接放到Name字段中?

    • 必要性:现代程序语言一般不限制标识符的长度,故name字段的长度不便预先固定,短了:适用范围小,长了:浪费空间、降低查询效率。将标识符的字面值单独放在字符串表中,其位置索引放在name字段中,可保证name长度固定,并由此带来存储效率高、查询方便的优点
    • 可行性:语义分析中较少使用标识符的字面值,故在name字段中不保存标识符字面值是合理的

    语义检查

    • 变量或过程未经声明就使用
    • 变量或过程名重复声明
    • 运算分量类型不匹配
    • 操作符与操作数之间的类型不匹配 数组下标不是整数
    • 对非数组变量使用数组访问操作符
    • 对非过程名使用过程调用操作符
    • 过程调用的参数类型或数目不匹配
    • 函数返回类型有误

    转载地址:

    https://www.icourse163.org/learn/HIT-1002123007?tid=1003246005#/learn/announce

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: