parser/symbols.go
func (l *LexSymbolSet) GetSortedList() LexSymbolList {
	// Because symbols are parsed automatically in a loop, we need to make
	// sure that we search starting with the longest term (e.g., "INCLUDE"
	// must come before "IN")
	// However, simply sorting the symbols using alphabetical sort then
	// max-length forces us to make more comparisons than necessary.
	// To get the best of both world, we allow passing a floating point
	// "priority" parameter to sort the symbols
	if l.SortedList != nil {
		return l.SortedList
	}

	num := len(l.Map)
	list := make(LexSymbolList, num)
	i := 0
	for _, v := range l.Map {
		list[i] = v
		i++
	}
	l.SortedList = list.Sort()

	return l.SortedList
}
func (l *LexSymbolSet) GetSortedList() LexSymbolList {
	// Because symbols are parsed automatically in a loop, we need to make
	// sure that we search starting with the longest term (e.g., "INCLUDE"
	// must come before "IN")
	// However, simply sorting the symbols using alphabetical sort then
	// max-length forces us to make more comparisons than necessary.
	// To get the best of both world, we allow passing a floating point
	// "priority" parameter to sort the symbols
	if l.SortedList != nil {
		return l.SortedList
	}

	num := len(l.Map)
	list := make(LexSymbolList, num)
	i := 0
	for _, v := range l.Map {
		list[i] = v
		i++
	}
	l.SortedList = list.Sort()

	return l.SortedList
}
// GetSortedList returns the lsit of LexSymbols in order that they should
// be searched for in the tempalte