Hm, why do you have two productions for parsing attribute sets? I would expect dynamic attributes to be handled in "attrpath". Having two different ways to parse attribute sets seems ambiguous, and might be slow because it causes the GLR parser to fork the parse stack. But maybe Bison is smarter than I thought...