卒論の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は緩すぎるので適当に調整。