Trong tuyên bố full python grammar specificationwith
được định nghĩa là:Python ngữ pháp: with_stmt
with_stmt: 'with' with_item (',' with_item)* ':' suite
with_item: test ['as' expr]
đâu expr
là:
expr: xor_expr ('|' xor_expr)*
xor_expr: and_expr ('^' and_expr)*
and_expr: shift_expr ('&' shift_expr)*
Tại sao with_item
chứa expr
quy tắc thay vì đơn giản name
?
Đây là mã python hợp lệ:
with open('/dev/null') as f:
pass
Theo ngữ pháp mã này cũng là hợp lệ?
with open('/dev/null') as x^y|z:
pass
+1 Phân tích cú pháp xác định liệu các mã thông báo được tìm thấy trong mã nguồn có tạo thành một cây phân tích chính xác (như được định nghĩa bởi ngữ pháp) hay không. Phân tích ngữ nghĩa xác định liệu cây phân tích kết quả có thể được đánh giá hay không. (http://en.wikipedia.org/wiki/Compiler#Front_end) – chepner