package main

import (
	"fmt"
	"go/token"
)

// kandidatKeyword berisi 25 keyword resmi dari spesifikasi bahasa Go.
var kandidatKeyword = []string{
	"break", "case", "chan", "const", "continue", "default", "defer",
	"else", "fallthrough", "for", "func", "go", "goto", "if", "import",
	"interface", "map", "package", "range", "return", "select",
	"struct", "switch", "type", "var",
}

// kandidatPredeclared berisi identifier terpasang yang sering dikira keyword.
var kandidatPredeclared = []string{
	"any", "comparable", "error", "byte", "rune",
	"nil", "true", "false", "iota",
}

func main() {
	keyword := 0
	for _, kata := range kandidatKeyword {
		if token.Lookup(kata) != token.IDENT {
			keyword++
		}
	}
	fmt.Printf("keyword resmi terverifikasi: %d dari %d kandidat\n", keyword, len(kandidatKeyword))

	bukanKeyword := 0
	for _, kata := range kandidatPredeclared {
		if token.Lookup(kata) == token.IDENT {
			bukanKeyword++
		}
	}
	fmt.Printf("predeclared identifier yang bukan keyword: %d dari %d\n", bukanKeyword, len(kandidatPredeclared))
}
