%start List %title "A simple comma separated list of integers" %comment "A trailing comma is allowed." %% /* 0 */ List: ListOpt /* Option */ ; /* 1 */ ListOpt /* `Option::Some` */ : Num ListRest ListOpt0 /* Option */ ; /* 2 */ ListOpt0 /* `Option::Some` */ : "," ; /* 3 */ ListOpt0 /* `Option::None` */ : ; /* 4 */ ListOpt /* `Option::None` */ : ; /* 5 */ ListRest : ListRestOpt /* Option */ ; /* 6 */ ListRestOpt /* `Option::Some` */ : "," Num ListRest ; /* 7 */ ListRestOpt /* `Option::None` */ : ; /* 8 */ Num : "0|[1-9][0-9]*" ;