Tsumida / MiniC

Lexer and syntax analysis for tiny c compiler.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TODO

Tsumida opened this issue · comments

commented

符号表:

  • 增加两个域: mem_offset 和 size,对于Int, size = 1; 数组: size >= 1
  • 虚拟机的数据区域Dmem的大小为 1024 * 32 Byte, 超出要报警。
  • 搞一个 SymbolTable类,封装好三个表,对外提供类似insert_var(), insert_func(), delete_var(), lookup(..)等操作。
  • 为符号表增加封装好函数alloc_mem(var_name: str, size: int),。insert变量时,自动为变量分配内存空间。

生成代码:

  • 代码生成器可参考CGEN.c文件
  • 建议为函数的形式参数分配空间,每次传入参数,就把入参覆盖掉形式参数的内存。(有更好的做法可以忽略这个)
  • 赋值语句:a = b,
  • 运算语句: +-*/<>!===<=>=
  • 判断语句:if
  • 循环语句:while
  • 函数调用:先放一边
  • 函数返回:未知
  • 对数组的操作:未知

UI:

  • 符号表UI界面
  • 修改语法分析UI的代码

期末报告:

  • 期中报告
  • 语义分析
  • 代码生成
  • 测试用例
  • 运行结果截图
  • 源代码打包文件
  • 可执行文件
  • 虚拟机