需求将 var a,b,c= 3,4,5 改为 a,b,c :=3,4,5将var m = 99 改为 m := 99这种结构如果采用普通的正则替换是很难的,但是采用tre...
需求将 var a,b,c= 3,4,5 改为 a,b,c :=3,4,5将var m = 99 改为 m := 99这种结构如果采用普通的正则替换是很难的,但是采用tre...
tree-sitter是一个开源的语法分析库,使用c语言编写,它有很多语言的绑定,比如go,也可以解析很多语言的语法。这里我们用go-tree-sitter和tree-sit...
目录格式clib-- one.c-- one.hmain.go//main.go和clib是同一级,one.c.和one.h是同一级one.h one.c main.go 在...
通道的原理:向通道写数据的协程是发送协程,从通道里读数据的是接收协程。由于通道存在互斥锁,每次只有一个协程进行发送或者接收数据的操作。在通道里数据是严格按照先进先出的规则对数...
读写锁的特点:读和读不互斥,读和写是互斥的,写和写也是互斥的原理:const rwmutexMaxReaders = 1 << 30 :获取读锁的协程的数量最多为2的30次...
context包通过父子链条关系和关闭chan来进行消息的通知当一个context的done变量的chan被关闭后,它会关闭它的所有子context的done变量的chan,...
切片是一个结构体,包含长度,容量,数据地址changeData参数是值传递第一次changedata时和a的数据相同,因为没有进行扩容,数据地址是一样的。第二个changeD...
算数符号加减乘除对应+,-,*,/幂:^左括号(右括号);代表一个表达式结束,要回显结果%ik:k是一个数字,标签 代表第几个输入%ok:k是一个数字,标签 代表第几个输出内...
main.go parse.go token.go 在前面一篇的基础上对报错进行了优化,假如语法解析错误,会指出具体报错的位置,还有报错的位置应该是什么token或者下一个t...
main.go parse.go token.go 这里实现了对包括乘除的加减四则运算的解析比如 1+34+(56)这个是符合语法规则的1+34+(56 这个是不符合语法规则...
1.学习平衡二叉树的时候最难理解的一点就是为什么平衡二叉树能够保证任意一个节点的左子树和右子树的高度差为0,1,-12.首先我们发现二叉树是对称的。我们可以通过插入数据1,2...
30_1.c 30_2.h 一般把#define和#include放到文件的开头位置,函数的外面。放到函数里面很少见吧。不过这样做也是符合c语言的语法规则的,因为c语言是支持...
计算部分cal.go main.go 语法树解析parse.go token部分 token.go 树结构体部分tree.go 过程就是先根据一个个token生成一颗语法树,...
这是一个简单的四则运算,包括词法分析,语法分析,运算通过栈实现先乘除后加减。在报错方面有一些bug,代码也写的很粗糙。如果发现bug可以提出来
1.步骤法(整体与部分,具体问题具体分析)一般程序都是由多个步骤组成的,每个步骤相互独立又彼此有关联。如果程序有问题,那么可以将程序分成多个步骤进行检测,找出哪些步骤有问题。...
1.创建CMakeLists.txt文件 2.在当前目录的ccompile目录下也创建一个CMakeLists.txt文件 3.在第一个CMakeLists.txt所在目录进...
调用的是main.add[go.shape.int,go.shape.int]这个函数对T1约束为int ,uint , uint8三种类型