擅长:python、mysql、java
<p>Python的语法是<a href="https://docs.python.org/3/reference/grammar.html" rel="noreferrer">LL(1)</a>,这意味着它在解析时只向前看一个符号</p>
<pre><code>[(v1, v2) for v1 in myList1 for v2 in myList2]
</code></pre>
<p>在这里,解析器看到如下内容</p>
<pre><code>[ # An opening bracket; must be some kind of list
[( # Okay, so a list containing some value in parentheses
[(v1
[(v1,
[(v1, v2
[(v1, v2)
[(v1, v2) for # Alright, list comprehension
</code></pre>
<p>然而,如果没有括号,它必须在早些时候作出决定</p>
<pre><code>[v1, v2 for v1 in myList1 for v2 in myList2]
[ # List-ish thing
[v1 # List containing a value; alright
[v1, # List containing at least two values
[v1, v2 # Here's the second value
[v1, v2 for # Wait, what?
</code></pre>
<p>回溯的解析器往往非常慢,因此LL(1)解析器不会回溯。因此,不明确的语法是被禁止的</p>