为了账号安全,请及时绑定邮箱和手机立即绑定

Go使用Go来解析自身吗?

Go使用Go来解析自身吗?

Go
长风秋雁 2021-05-04 16:08:52
我正在开始一个关于向Go添加一些功能的类项目。但是,我对Go的结构完全感到困惑。我的印象是Go使用了flex和bison,但在Go源代码中找不到任何熟悉的东西。另一方面,目录go / src / pkg / go中包含具有熟悉名称(ast,token,parser等)的文件夹,但其中包含的都是.go文件。我很困惑!我的要求是,对于熟悉Go的任何人,您能否概述一下Go是如何进行词法分析,解析等的,以及在何处可以找到用于编辑语法的文件以及其他内容?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超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语言编写(no flex)。语法是用野牛写的:


src/cmd/gc/lex.c

src/cmd/gc/go.y

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


如果您打算修改语法,则应注意,Bison语法有时无法区分表达式和类型。


查看完整回答
反对 回复 2021-05-10
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

查看完整回答
反对 回复 2021-05-10
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

Go编译器是用c编写的,这就是为什么需要flex和bison的原因。不使用Go包进行解析。如果您想在Go中编写自托管编译器,则可以使用Go解析包。


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信