func (pt ParamType) Kind() reflect.Kind {
	switch pt {
	case ParamTypeAlphabetical:
		fallthrough
	case ParamTypeFile:
		fallthrough
	case ParamTypePath:
		fallthrough
	case ParamTypeString:
		return reflect.String
	case ParamTypeInt:
		return reflect.Int
	case ParamTypeLong:
		return reflect.Int64
	case ParamTypeBoolean:
		return reflect.Bool
	}
	return reflect.Invalid  
}
Not because for a single reason
a string may be a
ParamTypeString or a ParamTypeFile
or a ParamTypePath or ParamTypeAlphabetical.

func ParamTypeFromStd(k reflect.Kind) ParamType {
Kind returns the std kind of this param type.
package ast
import (
	"fmt"
	"reflect"
	"strconv"
)
type ParamType uint8
const (
	ParamTypeUnExpected ParamType = iota
	ParamTypeString
	ParamTypeInt
	ParamTypeLong
	ParamTypeBoolean
	ParamTypeAlphabetical
	ParamTypeFile
	ParamTypePath
)
func (pt ParamType) String() string {
	for k, v := range paramTypes {
		if v == pt {
			return k
		}
	}
	return "unexpected"
}