卒論のBNF

もっとちゃんとrangeというものを扱えるといいんだけど、こればっかりはなんとも。

slice-expr      := identifier '[' range-expr-list ']'
sync-target     := slice-expr ( ',' sync-target ) ?
range-expr-list := range-expr
                 | range-expr ',' range-expr-list
range-expr      := expr ':' expr ( ':' expr ) ?
                 | expr '[' range-expr ']'

多分exprは緩すぎるので適当に調整。