JSゆるふわめも

がっこうでべんきょうしたことをめもがきしてます

scanner package

Goには良く使用するであろうbufio Scannerとは別に、構文解析を行うためのscannerパッケージに属するScanner型が存在する

Package scanner implements a scanner for Go source text. It takes a []byte as source which can then be tokenized through repeated calls to the Scan method.

scannerパッケージはGoのソースコードのscannerを実装しています。このパッケージはbyte配列をソースコードとみなし、Scanメソッドを繰り返し呼び出すことで、トークナイズします。

公式ドキュメントのScanメソッドのコード例を実行してみるとscannerパッケージの役割がよくわかる。 scanner - The Go Programming Language

 src := []byte("cos(x) + 1i*sin(x) // Euler")
1:1  IDENT   "cos"
1:4 (   ""
1:5 IDENT   "x"
1:6 )   ""
1:8 +   ""
1:10    IMAG    "1i"
1:12    *   ""
1:13    IDENT   "sin"
1:16    (   ""
1:17    IDENT   "x"
1:18    )   ""
1:20    ;   "\n"
1:20    COMMENT "// Euler"

scannerを使用して構文解析をしている例 d.hatena.ne.jp