src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

doc.go (1370B)


      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 //
     17 //	Grammar:
     18 //	stmt -> section | stmt'
     19 //	stmt' -> epsilon | expr
     20 //	expr -> value (stmt)* | equal_expr (stmt)*
     21 //	equal_expr -> value ( ':' | '=' ) equal_expr'
     22 //	equal_expr' -> number | string | quoted_string
     23 //	quoted_string -> " quoted_string'
     24 //	quoted_string' -> string quoted_string_end
     25 //	quoted_string_end -> "
     26 //
     27 //	section -> [ section'
     28 //	section' -> section_value section_close
     29 //	section_value -> number | string_subset | boolean | quoted_string_subset
     30 //	quoted_string_subset -> " quoted_string_subset'
     31 //	quoted_string_subset' -> string_subset quoted_string_end
     32 //	quoted_string_subset -> "
     33 //	section_close -> ]
     34 //
     35 //	value -> number | string_subset | boolean
     36 //	string -> ? UTF-8 Code-Points except '\n' (U+000A) and '\r\n' (U+000D U+000A) ?
     37 //	string_subset -> ? Code-points excepted by <string> grammar except ':' (U+003A), '=' (U+003D), '[' (U+005B), and ']' (U+005D) ?
     38 //
     39 //	SkipState will skip (NL WS)+
     40 //
     41 //	comment -> # comment' | ; comment'
     42 //	comment' -> epsilon | value
     43 package ini