S: A B C D; A: ('a' '1')?; B: ('b' '1')*; C: ('c' '1')+; D: (('d' '1')('d' '2')?)*;