Go语言构建算法库
由于Go语言的标准库实现的数据结构少,所以需要自己实现
本项目目标在于从零开始实现编译原理的算法
Go实现的数据结构
栈,队列,链表,二叉树,红黑树,高度平衡树,跳表,图论
先封装底层的基础结构(如不可重复Set,Map,图论算法),然后向上层提供API支持,作为编译前端的实现前提
2021.09.09start
2021.09.11开始底层数据结构构建(图论算法很🤢debug快吐了)
2021,09,12完成web api
2021.09.13修正图论算法,完成EpsilonClosure构造过程
为了向上层提供各种能力,需要封装底层图论,不可重复Set等API
2021.09.14正则表达式->NFA->DFA->DFA最小化过程
2021.09.15Set运算增强
本proj可部署到物理机或者容器内,作为一个FaaS(云函数)服务
支持三种方式调用
- HTTP RESTful API 格式json
- gRPC 跨语言调用 protobuf协议 尚在开发中
- CLIs 尚在开发中
HTTP REST 形式,GET方法可以用浏览器,POST方法只能用命令行或者Postman等接口测试工具

POST方法设置HTTP-Headers Content-Type 为 application/json 请求体Body内容为json格式



返回结果

{
"Edges" :[
{
"NodeIValue": 0,"NodeJValue": 1,"EdgeValue":"epsilon"
},{
"NodeIValue": 0,"NodeJValue": 7,"EdgeValue":"epsilon"
},{
"NodeIValue": 1,"NodeJValue": 2,"EdgeValue":"epsilon"
},{
"NodeIValue": 1,"NodeJValue": 4,"EdgeValue":"epsilon"
},{
"NodeIValue": 2,"NodeJValue": 3,"EdgeValue":"a"
},{
"NodeIValue": 4,"NodeJValue": 5,"EdgeValue":"b"
},{
"NodeIValue": 6,"NodeJValue": 1,"EdgeValue":"epsilon"
},{
"NodeIValue": 6,"NodeJValue": 7,"EdgeValue":"epsilon"
},{
"NodeIValue": 3,"NodeJValue": 6,"EdgeValue":"epsilon"
},{
"NodeIValue": 5,"NodeJValue": 6,"EdgeValue":"epsilon"
},{
"NodeIValue": 7,"NodeJValue": 8,"EdgeValue":"a"
},{
"NodeIValue": 8,"NodeJValue": 9,"EdgeValue":"b"
},{
"NodeIValue": 9,"NodeJValue": 10,"EdgeValue":"b"
}
],
"Nodes":[ 0 ]
}
其他REST形式类似
gRPC
跨语言调用
待开发
CLIs
命令行工具
待开发
快2000line 了
2021.09.14 13:35
2021.09.15
- 不能完全保证算法的正确,需要大量数据去验证
- 在debug过程中内存泄漏,引用非法,dereference指针异常
从这个状态
转换到

2021.09.16~17 摸了🐟,写了几行
2021.09.18 抢到了6级😊,继续写一些复杂的数据结构,提高图论查找和字符串匹配速度