Nella dichiarazione full python grammar specificationwith
è definito come:Python grammatica: with_stmt
with_stmt: 'with' with_item (',' with_item)* ':' suite
with_item: test ['as' expr]
Dove expr
è:
expr: xor_expr ('|' xor_expr)*
xor_expr: and_expr ('^' and_expr)*
and_expr: shift_expr ('&' shift_expr)*
Perché with_item
contiene expr
regola invece di pianura name
?
Questo è codice Python valido:
with open('/dev/null') as f:
pass
Secondo la grammatica questo codice è valido anche?
with open('/dev/null') as x^y|z:
pass
+1 L'analisi sintattica determina se i token trovati nel codice sorgente formano un albero di analisi corretto (come definito dalla grammatica). L'analisi semantica determina se l'albero di analisi risultante può essere valutato. (Http://en.wikipedia.org/wiki/Compiler#Front_end) – chepner