def bnf(): return ruiko.Or([ ruiko.Bind('str', ruiko.N('Str')), ruiko.Bind('str', ruiko.N('DoubleQuotedStr')), ruiko.Bind('pat', ruiko.N('pattern')), ruiko.Bind('expr', ruiko.Named('quote')), ruiko.Bind('expr', ruiko.Named('closure')), ruiko.Bind('expr', ruiko.Named('placeholder')) ])
def bnf(): return ruiko.Bind( 'result', ruiko.And([ ruiko.Or([ruiko.C('https:'), ruiko.C('http:')]), ruiko.C('//'), ruiko.Seq(ruiko.N('pattern'), 1, -1), ruiko.Seq(ruiko.And([ruiko.C('/'), ruiko.N('pattern')]), 0, -1), ruiko.Seq(ruiko.C('/'), 0, 1) ]))
def bnf(): return ruiko.And([ ruiko.Seq(ruiko.N('Alpha'), 1, -1), ruiko.Bind('n1', ruiko.N('Num')), ruiko.Bind('n2', ruiko.N('Num')) ])
def bnf(): return ruiko.And( [ruiko.C('--'), ruiko.Bind('key', ruiko.N('pattern'))])
def bnf(): return ruiko.And([ ruiko.C('-'), ruiko.Bind('key', ruiko.N('pattern')), ruiko.Bind('value', ruiko.Named('arg')) ])