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);