# uml-JTracing
| **中文** | [English](readme_en.md) |
[![GitHubStars](https://img.shields.io/github/stars/AllwenWeill/uml-JTracing_Online?logo=GitHub)](https://github.com/AllwenWeill/uml-JTracing_Online/stargazers)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/AllwenWeill/uml-JTracing_Online.svg)](https://github.com/AllwenWeill/uml-JTracing_Online/pulls)
[![GitHub LICENSE](https://img.shields.io/github/license/AllwenWeill/uml-JTracing_Online.svg)](https://github.com/AllwenWeill/uml-JTracing_Online/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/AllwenWeill/uml-JTracing_Online.svg)](https://github.com/AllwenWeill/uml-JTracing_Onlinee/graphs/contributors)
UML-JTracing是基于C++20实现的UML时序智能生成器,针对于芯片领域常用C++和SystemVerilog两种编程语言自动进行高鲁棒性的词法解析和常见语法分析和语义分析,生成可靠Abstract Syntax Tree,并提供Parser解析过程信息、报错信息和变量表等解析信息,通过自定义数据结构对解析过程进行格式化存储,最终将利用Python实现的UML智能生成器检测到结构化后的解析信息,通过加载解析信息进行自动绘制目标源代码的UML时序图
## 功能
* 利用有限自动机逐字符扫描C++17和SystemVerilog源代码进行高鲁棒性词法分析,稳定生成对应Token;
* 利用递归下降法手工构建语法分析器,实现C++17和SystemVerilog常见语法检查,生成分析结果并输出可靠AST抽象语法树;
* 提供解析过程信息、报错信息和变量表等解析信息,将源代码的执行流程进行特征提取,生成规范化的uml时序结构信息;
* 利用Turtle图形库动态绘制UML时序图,并支持对象和消息自定义;
## Demo演示
----------
> * __UML时序智能生成器整体演示__
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/github_func_demo.gif" height="429"/> </div>
> * __基于C++多文件真实项目案例测试__
> * *__<small>包含boss、workerManager等多个类,类与类之间存在互相调用和实例化,成员函数之间也存在多层嵌套关系,其中还包含各种for循环和while循环还有大量if else条件的使用</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/test_files.png" height="200"/> </div>
> * *__<small>提供解析过程信息</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/parsing_info.png" height="200"/> </div>
> * *__<small>提供UML时序结构信息:FuncTable</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/funcTable.png" height="200"/> </div>
> * *__<small>提供UML时序结构信息:FuncTable</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/funcTable.png" height="200"/> </div>
> * *__<small>提供UML时序结构信息:ActivationTable</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/ActivationTable.png" height="200"/> </div>
> * *__<small>提供UML时序结构信息:LoopTable</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/LoopTable.png" height="60"/> </div>
> * *__<small>提供UML时序结构信息:FuncTable</small>__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/AltTable.png" height="200"/> </div>
> * *__<small>UML时序图__*
<div align=center><img src="https://github.com/AllwenWeill/IMG/blob/main/UML2.png" height="800"/> </div>
## 环境要求
* Windows/macOS环境
* C++17
## 项目启动
**<span style="color:red;">Warming: 项目持续更新中,请拉取umlupdate/aw_0705分支获取最新代码...</span>**
```bash
1. rebuild CMake->更新CMakeLists.txt
2. 在main.cpp中修改exePath为uml-JTracing_Online\\test\\output\\umlDrawing.exe的绝对路径
3. 在ClassList.cpp中修改m_ActivationTablePath、m_AltTablePath、m_LoopTablePath、m_FuncTablePath为uml-JTracing_Online\\test\\output\\对应.txt文件的绝对路径
4. 运行启动项UML-JTracing_Online.exe
(Input: 将需要分析的目标源文件放入Input文件夹中; Output: UML时序图及结构信息将生成在Output文件夹中.)
```
## 致谢
[@Ruslan Spivak](https://github.com/rspivak/): Let's Build A Simple Interpreter
[@LLVM](https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html): My First Language Frontend with LLVM Tutorial
热爱技术。
- 粉丝: 3022
- 资源: 7865
最新资源
- Mall4j商城-JAVA商城-小程序商城-c/c++源码资源
- libpciaccess-devel-0.14-1.el7.x64-86.rpm.tar.gz
- lilishop 商城 小程序 uni 移动端-java开发项目资源
- libpeas-1.22.0-1.el7.x64-86.rpm.tar.gz
- libpeas-devel-1.22.0-1.el7.x64-86.rpm.tar.gz
- libpeas-gtk-1.22.0-1.el7.x64-86.rpm.tar.gz
- 西门子200smart PLC与昆仑通态触摸屏智能脉冲除尘器程序:稳定控制20仓240个脉冲阀的工艺流程与运行监控,西门子200smart PLC与昆仑通态触摸屏所写的脉冲除尘器程序 20个仓,每个
- libpeas-loader-python-1.22.0-1.el7.x64-86.rpm.tar.gz
- libpfm-4.7.0-10.el7.x64-86.rpm.tar.gz
- 扫地机器人路径规划仿真:基于全覆盖内螺旋算法MATLAB实现动态展示,扫地机器人路径规划问题,算法是全覆盖内螺旋算法,使用MATLAB实现,下列为运行图过程截图 这段代码是一个扫地机器人的仿真程序 程
- libpfm-devel-4.7.0-10.el7.x64-86.rpm.tar.gz
- jeewx-boot-活动资源
- KeyMouseHook-活动资源
- 老工程师多年经验结晶:超越QT控件的LabVIEW俱全控件之美,堪比QT控件漂亮的LabVIEW俱全控件 一位老工程师,多年的经验积累的 ,LabVIEW控件; 漂亮齐全; 堪比QT; 经验积累
- jonquimbly-shap-e-机器学习开发资源
- libpfm-python-4.7.0-10.el7.x64-86.rpm.tar.gz
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈