Go 언어 text/scanner 알아보기
오늘은 Go 언어 기본 패키지에 포함되있는 text/scanner를 이용하여 스캐너 및 토큰화 해보려 합니다.
package main
import (
"fmt"
"strings"
"text/scanner"
)
text/scanner 패키지와 strings 패키지로 텍스트를 스캔하고 토크나이저를 수행할 수 있게 할 수 있습니다.
fmt 패키지로 출력을 담당합니다.
func main() {
var source = `
// package.
package main
// import
import (
"fmt"
)
// main
func main() {
fmt.println("hello, world!")
}`
간단한 hello, world를 출력하는 코드 텍스트를 변수에 담았습니다.
var scannerVar scanner.Scanner
scannerVar.Init(strings.NewReader(source))
scannerVar.Filename = "example.go"
코드 텍스트를 스캐너에서 토큰화를 위한 준비를 합니다.
파일 이름을 지정할 수도 있습니다.
for tok := scannerVar.Scan(); tok != scanner.EOF; tok = scannerVar.Scan() {
fmt.Printf("%s: %s\n", scannerVar.Position, scannerVar.TokenText())
}
}
for문으로 스캐너의 끝까지 반복하면서 토큰화된 텍스트의 위치와 문자를 출력해줍니다.
주석은 스캐너의 모드가 기본인 상태에서는 출력되지 않습니다.
Written on November 2, 2018