[Tutor] understanding pydoc try
John Maclean
jayeola at gmail.com
Thu Aug 30 16:43:31 CEST 2012
On 08/30/2012 03:05 PM, Dave Angel wrote:
> On 08/30/2012 09:30 AM, John Maclean wrote:
>> What does the first line from `pydoc try` actually mean? This does not
>> look like the syntax that one is supposed to use.
>>
>> try_stmt ::= try1_stmt | try2_stmt
>>
> You're looking at the first of three BNF statements. BNF (Backus Naur
> Form, or something like that) is a way of describing a grammar. i'll
> quote the whole thing here, and try to explain it.
>
> The following is from Python 3.2's pydoc:
>
> try_stmt ::= try1_stmt | try2_stmt
> try1_stmt ::= "try" ":" suite
> ("except" [expression ["as" target]] ":" suite)+
> ["else" ":" suite]
> ["finally" ":" suite]
> try2_stmt ::= "try" ":" suite
> "finally" ":" suite
>
> The first statement says that a try_stmt is one or the other of two
> formats. This simply says there are two syntaxes you can use, depending
> on what try features you want.
>
> The second lists the (most common, i expect) syntax. It has a literal
> try token, followed by a literal colon token, followed by a suite of
> statements (that's defined elsewhere, but would include simple
> statements, if statements, and so on. It wouldn't include def or class,
> presumably).
>
> Then there are one or more except clauses. Note the trailing + which
> means this element may be repeated, but must be present at least once.
>
> Then there is an optional else clause.
>
> Then an optional finally clause.
>
> These must be present in the specific order stated above. And you can't
> (for example) have an else without an except, because except is one or
> more times.
>
> The second syntax does not include the except nor else clauses.
>
> Is that clearer?
>
Thanks. This is a heck of a lot more clearer to me! BNF, huh? Another
set TLA that I don't need to know ;-)
More information about the Tutor
mailing list