我正在开始一个关于添加一些Go功能的类项目。
然而,我对Go的结构感到非常困惑。我的印象是Go使用了flex和bison,但我在Go的源代码中找不到任何熟悉的东西。
另一方面,目录go/src/pkg/go具有熟悉名称的文件夹(ast、token、parser等)。但它们包含的都是.go文件。我糊涂了!
我的要求是,任何熟悉Go的人,你能给我一个概述,Go是如何被词法分析,解析等,以及在哪里可以找到文件来编辑语法和其他东西?
发布于 2012-03-28 06:31:10
目录结构:
src/cmd/5* ARM
src/cmd/6* amd64 (x86-64)
src/cmd/8* i386 (x86-32)
src/cmd/cc C compiler (common part)
src/cmd/gc Go compiler (common part)
src/cmd/ld Linker (common part)
src/cmd/6c C compiler (amd64-specific part)
src/cmd/6g Go compiler (amd64-specific part)
src/cmd/6l Linker (amd64-specific part)
Lexer是用纯C编写的(没有flex
)。语法是用Bison编写的:
src/cmd/gc/lex.c
src/cmd/gc/go.y
src/cmd
下的许多目录都包含一个doc.go
文件,其中包含目录内容的简短描述。
如果您计划修改语法,应该注意的是,Bison语法有时不区分表达式和类型。
发布于 2012-03-28 01:14:05
lex.c go.y
发布于 2012-03-28 01:02:25
Go编译器是用c编写的,这就是你需要flex和bison的原因。未使用用于解析的Go包。如果你想用Go编写一个自托管编译器,你可以使用Go解析包。
https://stackoverflow.com/questions/9894098
复制相似问题