| ... | @@ -1923,49 +1923,28 @@ x{} | ... | @@ -1923,49 +1923,28 @@ x{} |
| 1923 | as have the operators with higher precedence (those shown above). | 1923 | as have the operators with higher precedence (those shown above). |
| 1924 | </p> | 1924 | </p> |
| 1925 | | 1925 | |
| 1926 | <details style="display:none;" id="ambig-details"> | | |
| 1927 | <summary style="cursor:pointer;">Toggle operator precedence ambiguity details</summary> | | |
| 1928 | <p> | | |
| 1929 | The operators that look <span class="ambig-chain">like this</span> have ambiguous precedence with the other operators | | |
| 1930 | on the same line. Those that look <span class="ambig-nonchain">like this</span> also have ambiguous | | |
| 1931 | precedence with themselves (they cannot be chained). | | |
| 1932 | </p> | | |
| 1933 | </details> | | |
| 1934 | | | |
| 1935 | <script> | | |
| 1936 | let ambig_details = document.getElementById("ambig-details"); | | |
| 1937 | ambig_details.style.display = 'block'; | | |
| 1938 | ambig_details.addEventListener("toggle", (event) => { | | |
| 1939 | document.querySelectorAll('.ambig-chain').forEach(e => { e.classList.toggle('tok-number'); }); | | |
| 1940 | document.querySelectorAll('.ambig-nonchain').forEach(e => { | | |
| 1941 | e.classList.toggle('tok-number'); | | |
| 1942 | e.style.borderBottom = ambig_details.open ? '1px dotted' : ''; | | |
| 1943 | }); | | |
| 1944 | }); | | |
| 1945 | </script> | | |
| 1946 | | | |
| 1947 | <p> | 1926 | <p> |
| 1948 | For arithmetic operators: | 1927 | For arithmetic operators: |
| 1949 | </p> | 1928 | </p> |
| 1950 | | 1929 | |
| 1951 | <pre><code>* / *% *| <span class="ambig-nonchain">%</span> | 1930 | <pre>{#syntax#}* / *% *| % |
| 1952 | + - +% -% +| -| | 1931 | + - +% -% +| -| |
| 1953 | <span class="ambig-nonchain">==</span> <span class="ambig-nonchain">!=</span> <span class="ambig-nonchain">&lt;</span> <span class="ambig-nonchain">></span> <span class="ambig-nonchain">&lt;=</span> <span class="ambig-nonchain">>=</span> | 1932 | == != < > <= >= |
| 1954 | <span class="ambig-chain">and or</span></code></pre> | 1933 | and or{#endsyntax#}</pre> |
| 1955 | | 1934 | |
| 1956 | <p> | 1935 | <p> |
| 1957 | For bitwise operators: | 1936 | For bitwise operators: |
| 1958 | </p> | 1937 | </p> |
| 1959 | | 1938 | |
| 1960 | <pre><code><span class="ambig-nonchain">&lt;&lt;</span> <span class="ambig-nonchain">&lt;&lt;|</span> <span class="ambig-nonchain">>></span> <span class="ambig-chain">& ^ |</span> | 1939 | <pre>{#syntax#}<< <<| >> & ^ | |
| 1961 | <span class="ambig-nonchain">==</span> <span class="ambig-nonchain">!=</span> <span class="ambig-nonchain">&lt;</span> <span class="ambig-nonchain">></span> <span class="ambig-nonchain">&lt;=</span> <span class="ambig-nonchain">>=</span> | 1940 | == != < > <= >= |
| 1962 | <span class="ambig-chain">and or</span></code></pre> | 1941 | and or{#endsyntax#}</pre> |
| 1963 | | 1942 | |
| 1964 | <p> | 1943 | <p> |
| 1965 | For null and error recovery operators: | 1944 | For null and error recovery operators: |
| 1966 | </p> | 1945 | </p> |
| 1967 | | 1946 | |
| 1968 | <pre><code><span class="ambig-chain">catch orelse</span></code></pre> | 1947 | <pre>{#syntax#}catch orelse{#endsyntax#}</pre> |
| 1969 | | 1948 | |
| 1970 | <p> | 1949 | <p> |
| 1971 | For error set operators: | 1950 | For error set operators: |