// Package ini is an LL(1) parser for configuration files.
//
//	Example:
//	sections, err := ini.OpenFile("/path/to/file")
//	if err != nil {
//		panic(err)
//	}
//
//	profile := "foo"
//	section, ok := sections.GetSection(profile)
//	if !ok {
//		fmt.Printf("section %q could not be found", profile)
//	}
//
// Below is the BNF that describes this parser
//	Grammar:
//	stmt -> value stmt'
//	stmt' -> epsilon | op stmt
//	value -> number | string | boolean | quoted_string
//
//	section -> [ section'
//	section' -> value section_close
//	section_close -> ]
//
//	SkipState will skip (NL WS)+
//
//	comment -> # comment' | ; comment'
//	comment' -> epsilon | value
package ini