Go使用Go来解析自身吗?

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

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

另一方面,目录go / src / pkg / go中包含具有熟悉名称(ast,token,parser等)的文件夹,但其中包含的都是.go文件。我很困惑!

我的要求是,对于熟悉Go的任何人,您能否概述一下Go是如何进行词法分析,解析等的,以及在何处可以找到用于编辑语法的文件以及其他内容?


长风秋雁
浏览 225回答 3
3回答

守候你守候我

目录结构:src/cmd/5*   ARMsrc/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.csrc/cmd/gc/go.y下的许多目录src/cmd都包含一个doc.go文件,其中对该目录的内容进行了简短描述。如果您打算修改语法,则应注意,Bison语法有时无法区分表达式和类型。

开心每一天1111

lex.c go.y

慕码人8056858

Go编译器是用c编写的,这就是为什么需要flex和bison的原因。不使用Go包进行解析。如果您想在Go中编写自托管编译器,则可以使用Go解析包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go