github.com/aavshr/aws-sdk-go@v1.41.3/internal/ini/doc.go (about)

     1  // Package ini is an LL(1) parser for configuration files.
     2  //
     3  //	Example:
     4  //	sections, err := ini.OpenFile("/path/to/file")
     5  //	if err != nil {
     6  //		panic(err)
     7  //	}
     8  //
     9  //	profile := "foo"
    10  //	section, ok := sections.GetSection(profile)
    11  //	if !ok {
    12  //		fmt.Printf("section %q could not be found", profile)
    13  //	}
    14  //
    15  // Below is the BNF that describes this parser
    16  //  Grammar:
    17  //  stmt -> section | stmt'
    18  //  stmt' -> epsilon | expr
    19  //  expr -> value (stmt)* | equal_expr (stmt)*
    20  //  equal_expr -> value ( ':' | '=' ) equal_expr'
    21  //  equal_expr' -> number | string | quoted_string
    22  //  quoted_string -> " quoted_string'
    23  //  quoted_string' -> string quoted_string_end
    24  //  quoted_string_end -> "
    25  //
    26  //  section -> [ section'
    27  //  section' -> section_value section_close
    28  //  section_value -> number | string_subset | boolean | quoted_string_subset
    29  //  quoted_string_subset -> " quoted_string_subset'
    30  //  quoted_string_subset' -> string_subset quoted_string_end
    31  //  quoted_string_subset -> "
    32  //  section_close -> ]
    33  //
    34  //  value -> number | string_subset | boolean
    35  //  string -> ? UTF-8 Code-Points except '\n' (U+000A) and '\r\n' (U+000D U+000A) ?
    36  //  string_subset -> ? Code-points excepted by <string> grammar except ':' (U+003A), '=' (U+003D), '[' (U+005B), and ']' (U+005D) ?
    37  //
    38  //  SkipState will skip (NL WS)+
    39  //
    40  //  comment -> # comment' | ; comment'
    41  //  comment' -> epsilon | value
    42  package ini