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