def p_route(self, p):
p[<NUM_LIT:0>] = AstRouteDef(self.path, p.lineno(<NUM_LIT:1>), p.lexpos(<NUM_LIT:1>), p[<NUM_LIT:2>], p[<NUM_LIT:3>], p[<NUM_LIT:5>], *p[<NUM_LIT:4>])<EOL>if len(p) > <NUM_LIT:7>:<EOL><INDENT>p[<NUM_LIT:0>].set_doc(p[<NUM_LIT:8>])<EOL>if p[<NUM_LIT:9>]:<EOL><INDENT>keys = set()<EOL>for attr in p[<NUM_LIT:9>]:<EOL><INDENT>if attr.name in keys:<EOL><INDENT>msg = "<STR_LIT>" % attr.name<EOL>self.errors.append((msg, attr.lineno, attr.path))<EOL><DEDENT>keys.add(attr.name)<EOL><DEDENT>p[<NUM_LIT:0>].set_attrs(p[<NUM_LIT:9>])<EOL><DEDENT><DEDENT>
route : ROUTE route_name route_version route_io route_deprecation NL \
                        INDENT docsection attrssection DEDENT
                 | ROUTE route_name route_version route_io route_deprecation NL