code: def p_function_def(p):
      '''function_def : WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD newline_list function_body'''
      parts = _makeparts(p)
      body = parts[-1]
      name = parts[ast.findfirstkind(parts, 'word')]
  
      p[0] = ast.node(kind='function', name=name, body=body, parts=parts,
                      pos=_partsspan(parts)f p_function_def(p):
      '''function_def : WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD newline_list function_body'''
      parts = _makeparts(p)
      body = parts[-1]
      name = parts[ast.findfirstkind(parts, 'word')]
  
      p[0] = ast.node(kind='function', name=name, body=body, parts=parts,
                      pos=_partsspan(parts))
docs: function_def : WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD LEFT_PAREN RIGHT_PAREN newline_list function_body
                      | FUNCTION WORD newline_list function_body