我在一个学校项目中接触 Go 大约一个月了,我注意到 src/pkg/go 文件夹中的 go/ast、go/token、go/parser 等包。但是,gc 编译器基于位于 src/cmd/gc 中的 C 文件。
我的问题是关于 Go1 中用于构建和运行程序的新 go 命令:这个工具是否依赖于我上面引用的包?也就是说,如果我向 /go/token/token.go 添加了一个新令牌,新的 go 编译器会识别它吗?
Go编译器是用纯C编写的,不使用下面的包go/
。在 Go 源代码树中,其词法分析器位于 src/cmd/gc/lex.c 中,其 Bison 语法位于 src/cmd/gc/go.y 中。
The go/
包用于 godoc、gofmt 和各种 go tool 子命令等工具中。也许有一天它们也可以用来在 Go 中编写 Go 编译器,但目前还没有人在这条道路上走得很远。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)