3

学校のプロジェクトで約 1 か月間 Go に手を出しましたが、src/pkg/go フォルダーに go/ast、go/token、go/parser などのパッケージがあることに気付きました。ただし、gc コンパイラは、src/cmd/gc にある C ファイルに基づいていました。

私の質問は、プログラムをビルドして実行する Go1 の新しい go コマンドに関するものです。このツールは、上で参照したパッケージに依存していますか? つまり、新しいトークンを /go/token/token.go に追加した場合、それは新しい go コンパイラによって認識されますか?

4

3 に答える 3

5

Go コンパイラは純粋な C で記述されており、下のパッケージは使用しませんgo/。Go ソース ツリーでは、レクサーは src/cmd/gc/lex.c にあり、Bison 文法は src/cmd/gc/go.y です。

go/パッケージは、godoc、gofmt、およびさまざまな go ツール サブコマンドなどのツールで使用されます。いつかそれらを使って Go で Go コンパイラを書くこともできるかもしれませんが、まだその道を進んでいる人はいません。

于 2012-04-21T22:00:30.563 に答える
1

このツールは、上で参照したパッケージに依存していますか?

「go」ツールはそれらのパッケージに依存します

/go/token/token.go に新しいトークンを追加した場合、新しい go コンパイラによって認識されますか?

いいえ。

于 2012-04-21T18:29:06.833 に答える