[Python-Dev] Re: A syntax for function attributes?

Zack Weinberg zack@codesourcery.com
Thu, 31 Jul 2003 13:11:54 -0700

"Phillip J. Eby" <pje@telecommunity.com> writes:

> Me, I could probably live with:
> def p_expr_term(self,args) [
>      spark.rule(
>          """expr ::= expr + term
>             term ::= term * factor"""
>      )
> ]:
>      return AST(...)

Come to think, I tried to do something rather similar while attempting
to write an expect clone in python.

I would suggest the syntax

  def p_expr_term(self, args) {rule : """expr ::= expr + term
                                         term ::= term * factor"""}:
      return AST(...)

I.e. allow a dictionary constructor expression between the argument
list and the colon; this initializes the property dictionary of the
code object.  One could stick a call to spark.rule() in there, or have
a metaclass do it automatically.

This allows the square bracket notation to be reserved for
[classmethod] and the like.  I suppose there's nothing stopping square
brackets from being used for both, but I like having consistency with
other dictionary constructor expressions.