[Python-Dev] funcdef grammar production (original) (raw)

Jewett, Jim J jim.jewett at eds.com
Wed Mar 17 10:00:45 EST 2004


Michael Hudson:

PEP 318 is likely to change the BNF productions for funcdef, so I was taking a look at what is there right now.

Um, you do realise that this BNF is purely documentational?

I realize that documentation is purely documentational.

I didn't understand why this particular rule [all keywords arguments after all purely positional arguments] was left out of the pseudo-code and mentioned only in text. I also wondered why the parameter_list rule was so long and convoluted; one possible path is

(defparameter ",")* (defparameter [","])

In general, python documentation is either missing or very good. If this was the best explanation, then there was a problem with my mental model, and I wanted to know what I was missing. I suggested possible reasons in an attempt to clarify my question.

Guido explained by correcting my assumptions about what had to be unambiguous when. Under the current production,

"(a"

is ambiguous only over which defparameter (in the same production) the "a" represents. Under my formulation, it would be ambiguous whether "a" was a defparameter or a (regular) parameter, which are different productions. Looking ahead for the "=" violates a no-lookahead rule.

-jJ



More information about the Python-Dev mailing list