W sprawozdaniu full python grammar specificationwith
jest zdefiniowany jako:Python gramatyka: with_stmt
with_stmt: 'with' with_item (',' with_item)* ':' suite
with_item: test ['as' expr]
expr
Gdzie jest:
expr: xor_expr ('|' xor_expr)*
xor_expr: and_expr ('^' and_expr)*
and_expr: shift_expr ('&' shift_expr)*
Dlaczego with_item
zawiera expr
zasadę zamiast zwykłego name
?
Jest to ważny kod Python:
with open('/dev/null') as f:
pass
Według gramatyki kod ten jest również ważny?
with open('/dev/null') as x^y|z:
pass
+1 Analiza syntaktyczna określa, czy tokeny znalezione w kodzie źródłowym tworzą poprawne drzewo analizy (zdefiniowane przez gramatykę). Analiza semantyczna określa, czy wynikowe drzewo analizy może zostać ocenione. (http://en.wikipedia.org/wiki/Compiler#Front_end) – chepner