M67功能详解

功能展示

视频展示:https://buaa-lwz.s3.ap-southeast-1.amazonaws.com/mp4/M67%E5%8A%9F%E8%83%BD%E5%B1%95%E7%A4%BA.mp4

模块三(M67):

  • 根据模块二获得的语法树进行进一步信息提取
  • 使用C2CellShowAST()接口可以完整展示经过“分割、重组”后的“cell-mole-atom”层级语法树,源文件句法层级语法树信息清晰可见 (如下图片只包含一部分结果):
    • 此处,你能清晰看出代码由四个(不止,因为图片只能展示这些)Cell组成
    • 其中“CELL:”后面的信息则更多地显示了当前层级的CELL是何种句法元素,而它的子行则展示出了构成它的子元素(一般是mole与atom,也有cell)

      • 例如:“CELL:ext_decl”表达了“此处有一个cell,其类型是外部声明ext_decl”
      • 具体子语法树内容不难理解,模块二中已有讲解,故不再赘述

数据结构

模块三(M67):

  • 将存储了mole的语法树分割出cell,并重组、展示输出
  • 其中每个cell的数据结构为“多个mole子节点递归组成的子树”
  • 此过程中并未创建新数据结构存储cell,因为cell足够通过已创建的语法二叉树(AST)表达
  • 此步骤具有如下接口

    void C2CellShowAst(past p, int nest);