let record = let option_sep = [ label "operation" . store /[+-]/]? . Sep.equal in let option = Build.key_value /arch|trusted/ option_sep (store Rx.word) in let options = [ label "options" . Util.del_str "[" . Sep.opt_space . Build.opt_list option Sep.space . Sep.opt_space . Util.del_str "]" . sep_ws ] in [ Util.indent . seq "source" . [ label "type" . store word ] . sep_ws . options? . [ label "uri" . store uri ] . sep_ws . [ label "distribution" . store word ] . [ label "component" . sep_ws . store word ]* . del /[ \t]*(#.*)?/ "" . eol ] 
let sep_ws = Sep.space 
let eol = Util.del_str "\n" 
let comment = Util.comment 
let empty = Util.empty 
let word = /[^][# \n\t]+/ 
let uri = let protocol = /[a-z+]+:/ in let path = /\/[^] \t]*/ in let path_brack = /\[[^]]+\]\/?/ in protocol? . path | protocol . path_brack 
let record = let option_sep = [ label "operation" . store /[+-]/]? . Sep.equal in let option = Build.key_value /arch|trusted/ option_sep (store Rx.word) in let options = [ label "options" . Util.del_str "[" . Sep.opt_space . Build.opt_list option Sep.space . Sep.opt_space . Util.del_str "]" . sep_ws ] in [ Util.indent . seq "source" . [ label "type" . store word ] . sep_ws . options? . [ label "uri" . store uri ] . sep_ws . [ label "distribution" . store word ] . [ label "component" . sep_ws . store word ]* . del /[ \t]*(#.*)?/ "" . eol ] 
let lns = ( comment | empty | record ) *