code: def p_subshell(p):
      '''subshell : LEFT_PAREN compound_list RIGHT_PAREN'''
      lparen = ast.node(kind='reservedword', word=p[1], pos=p.lexspan(1))
      rparen = ast.node(kind='reservedword', word=p[3], pos=p.lexspan(3))
      parts = [lparen, p[2], rparen]
      p[0] = ast.node(kind='compound', list=parts, redirects=[],
                      pos=_partsspan(parts)f p_subshell(p):
      '''subshell : LEFT_PAREN compound_list RIGHT_PAREN'''
      lparen = ast.node(kind='reservedword', word=p[1], pos=p.lexspan(1))
      rparen = ast.node(kind='reservedword', word=p[3], pos=p.lexspan(3))
      parts = [lparen, p[2], rparen]
      p[0] = ast.node(kind='compound', list=parts, redirects=[],
                      pos=_partsspan(parts))
docs: subshell : LEFT_PAREN compound_list RIGHT_PAREN