首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go使用Go来解析自己?

Go使用Go来解析自己?
EN

Stack Overflow用户
提问于 2012-03-28 00:53:34
回答 3查看 713关注 0票数 12

我正在开始一个关于添加一些Go功能的类项目。

然而,我对Go的结构感到非常困惑。我的印象是Go使用了flex和bison,但我在Go的源代码中找不到任何熟悉的东西。

另一方面,目录go/src/pkg/go具有熟悉名称的文件夹(ast、token、parser等)。但它们包含的都是.go文件。我糊涂了!

我的要求是,任何熟悉Go的人,你能给我一个概述,Go是如何被词法分析,解析等,以及在哪里可以找到文件来编辑语法和其他东西?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-28 06:31:10

目录结构:

代码语言:javascript
运行
复制
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编写的:

代码语言:javascript
运行
复制
src/cmd/gc/lex.c
src/cmd/gc/go.y

src/cmd下的许多目录都包含一个doc.go文件,其中包含目录内容的简短描述。

如果您计划修改语法,应该注意的是,Bison语法有时不区分表达式和类型。

票数 8
EN

Stack Overflow用户

发布于 2012-03-28 01:14:05

lex.c go.y

票数 4
EN

Stack Overflow用户

发布于 2012-03-28 01:02:25

Go编译器是用c编写的,这就是你需要flex和bison的原因。未使用用于解析的Go包。如果你想用Go编写一个自托管编译器,你可以使用Go解析包。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9894098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档