当前位置: 首页 > news >正文

编译原理实验 之 TINY 之 语义分析(第二次作业)

文章目录

本实验是接着前面的两个实验的基础上进行完善的,所以对于前面的实验如何操作?请看我的另外两个博客~

编译原理 之 实验一

编译原理实验 之 Tiny C语言编译程序实验 语法分析

  • 首先明确一下这次实验的任务?

主要目的:实现符号表管理和类型检查,确保TINY C语言程序的语义正确性,为后续代码生成提供基础

  • 符号表生成器(symtab.c):管理变量信息

  • 核心任务:

    • 建立符号表:使用散列表存储变量的名称、内存位置、引号行号等信息
    • 插入符号表条目:在语法树遍历过程中,将变量名插入符号表,并记录其首次出现的内存位置和后续引用的行号
  • 语义分析器(annalyze.c):类型检查

  • 核心任务:

    • 遍历语法树:通过后根遍历,从叶子到根,检查各语法结构的类型是否一致
    • 类型检查规则:
      • 表达式类型,确保算术运算符和关系运算符的操作数类型匹配
      • 语句类型,检查赋值语句、条件语句、循环语句的类型兼容性

总的来说,需要补充以下的文件:symtab.canalyze.csymtab.hanalyze.hmain.c

symtab.h

  • 只需完善这个 st_insert函数即可

analyze.c

  • 只需完善checkNode函数即可

symtab.h

  • 不用修改

analyze.h

  • 稍微修改一下函数的参数

在这里插入图片描述
main.c

  • 参数设置为:
/* set NO_PARSE to FALSE to enable the parser */
#define NO_PARSE FALSE
/* set NO_ANALYZE to FALSE to enable semantic analysis */
#define NO_ANALYZE FALSE
/* set NO_CODE to TRUE to disable code generation */
#define NO_CODE TRUE// .../* allocate and set tracing flags */
int EchoSource = TRUE;
int TraceScan = FALSE;     // 禁用词法分析输出
int TraceParse = TRUE;     // 启用语法分析输出
int TraceAnalyze = TRUE;   // 启用语义分析输出
int TraceCode = FALSE;
int Error = FALSE;

上面需要补充的程序,自己根据自己的理解补充完整,下面给出具体的运行指令

  • 补充完整之后,通过下面的命令进行编译
gcc main.c util.c scan.c parse.c analyze.c symtab.c -o tiny
  • 运行测试
./tiny SAMPLE.TNY

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

其实只要第三张图片即可,所以你们交作业的时候,只用给出第三张图即可,也可以修改main.c的参数,只输出符号表和检查子程序的结果

相关文章:

  • 第九章:LLMOps自动化流水线:释放CI/CD/CT的真正力量
  • SQL 中的 `CASE WHEN` 如何使用?
  • AI书签管理工具开发全记录(九):用户端页面集成与展示
  • 排序算法——详解
  • 4.大语言模型预备数学知识
  • 【iOS(swift)笔记-13】App版本不升级时本地数据库sqlite更新逻辑一
  • 企业展示型网站模板HTML5网站模板下载指南
  • PostgreSQL 在生物信息学中的应用
  • Java并发编程实战 Day 4:线程间通信机制
  • 网络节点排查
  • cpper 转 Golang
  • 家政维修平台实战12搭建服务详情功能
  • 实现按天更新vintage并热力图可视化
  • 如何用AI写作?
  • SQL Views(视图)
  • SQL快速入门【转自牛客网】
  • MCP协议学习
  • Transformer核心技术深度解析:多头注意力机制与架构精粹
  • 20250602在荣品的PRO-RK3566开发板的Android13下打开关机对话框
  • 【Linux】网络--网络层--IP协议
  • 财务咨询网站开发计划书/seo推广网址
  • html简单百度网页代码/想找搜索引擎优化
  • 网站备案管理系统/免费关键词搜索引擎工具
  • 智慧企业解决方案/北京网站优化培训
  • 学做网站设计/搜索推广
  • 淅川微网站建设/深圳网络推广公司哪家好