gecko-dev/js2/semantics/JS14.html

801 lines
48 KiB
HTML
Raw Normal View History

1999-01-30 01:19:00 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>JavaScript 2.0 Grammar</TITLE>
<LINK rel="stylesheet" href="styles.css">
</HEAD>
<BODY>
<H2>Expressions</H2>
<H3>Primary Expressions</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">PrimaryExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">this</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">null</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">true</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">false</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">Number</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">String</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">RegularExpression</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">(</CODE>&nbsp;<VAR
class="nonterminal">Expression</VAR>&nbsp;<CODE class="terminal-keyword">)</CODE></DIV>
</DIV>
<H3>Left-Side Expressions</H3>
<DIV class="grammar-argument"><VAR class="nonterminal"><SPAN class="nonterminal-argument"><SPAN
class="symbol">c</SPAN></SPAN></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN>&nbsp;{<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">allowCalls</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">noCalls</SPAN></VAR>}</DIV>
<DIV class="grammar-argument"><VAR class="nonterminal"><SPAN class="nonterminal-argument"><SPAN
class="symbol">a</SPAN></SPAN></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN>&nbsp;{<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">allowIn</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">noIn</SPAN></VAR>}</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">PrimaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">[</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">]</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">.</CODE>&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">new</CODE>&nbsp;<VAR
class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">Arguments</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">allowCalls</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">Arguments</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">allowCalls</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">Arguments</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">allowCalls</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">[</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">]</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">allowCalls</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">.</CODE>&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NewExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">noCalls</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">new</CODE>&nbsp;<VAR
class="nonterminal">NewExpression</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Arguments</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">(</CODE>&nbsp;<CODE
class="terminal-keyword">)</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">(</CODE>&nbsp;<VAR
class="nonterminal">ArgumentList</VAR>&nbsp;<CODE class="terminal-keyword">)</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ArgumentList</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ArgumentList</VAR>&nbsp;<CODE
class="terminal-keyword">,</CODE>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LeftSideExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">NewExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MemberExpression<SUP><SPAN
class="nonterminal-attribute">allowCalls</SPAN></SUP></VAR></DIV>
</DIV>
<H3>Postfix Expressions</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">PostfixExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR>&nbsp;<CODE
class="terminal-keyword">++</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR>&nbsp;<CODE
class="terminal-keyword">--</CODE></DIV>
</DIV>
<H3>Unary Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">UnaryExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">PostfixExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">delete</CODE>&nbsp;<VAR
class="nonterminal">LeftSideExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">void</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">typeof</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">++</CODE>&nbsp;<VAR
class="nonterminal">LeftSideExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">--</CODE>&nbsp;<VAR
class="nonterminal">LeftSideExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">+</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">-</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">~</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">!</CODE>&nbsp;<VAR
class="nonterminal">UnaryExpression</VAR></DIV>
</DIV>
<H3>Multiplicative Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">MultiplicativeExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">MultiplicativeExpression</VAR>&nbsp;<CODE
class="terminal-keyword">*</CODE>&nbsp;<VAR class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">MultiplicativeExpression</VAR>&nbsp;<CODE
class="terminal-keyword">/</CODE>&nbsp;<VAR class="nonterminal">UnaryExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">MultiplicativeExpression</VAR>&nbsp;<CODE
class="terminal-keyword">%</CODE>&nbsp;<VAR class="nonterminal">UnaryExpression</VAR></DIV>
</DIV>
<H3>Additive Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">AdditiveExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">MultiplicativeExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">AdditiveExpression</VAR>&nbsp;<CODE
class="terminal-keyword">+</CODE>&nbsp;<VAR class="nonterminal">MultiplicativeExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">AdditiveExpression</VAR>&nbsp;<CODE
class="terminal-keyword">-</CODE>&nbsp;<VAR class="nonterminal">MultiplicativeExpression</VAR></DIV>
</DIV>
<H3>Bitwise Shift Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ShiftExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">AdditiveExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ShiftExpression</VAR>&nbsp;<CODE
class="terminal-keyword">&lt;&lt;</CODE>&nbsp;<VAR
class="nonterminal">AdditiveExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ShiftExpression</VAR>&nbsp;<CODE
class="terminal-keyword">&gt;&gt;</CODE>&nbsp;<VAR
class="nonterminal">AdditiveExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ShiftExpression</VAR>&nbsp;<CODE
class="terminal-keyword">&gt;&gt;&gt;</CODE>&nbsp;<VAR
class="nonterminal">AdditiveExpression</VAR></DIV>
</DIV>
<H3>Relational Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&lt;</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&gt;</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&lt;=</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&gt;=</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">instanceof</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">in</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&lt;</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&gt;</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&lt;=</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&gt;=</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">instanceof</CODE>&nbsp;<VAR class="nonterminal">ShiftExpression</VAR></DIV>
</DIV>
<H3>Equality Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">==</CODE>&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">!=</CODE>&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">===</CODE>&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">!==</CODE>&nbsp;<VAR class="nonterminal">RelationalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Binary Bitwise Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BitwiseAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">BitwiseAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&amp;</CODE>&nbsp;<VAR class="nonterminal">EqualityExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BitwiseXorExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">BitwiseAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">BitwiseXorExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">^</CODE>&nbsp;<VAR class="nonterminal">BitwiseAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BitwiseOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">BitwiseXorExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">BitwiseOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">|</CODE>&nbsp;<VAR class="nonterminal">BitwiseXorExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Binary Logical Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LogicalAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">BitwiseOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LogicalAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">&amp;&amp;</CODE>&nbsp;<VAR
class="nonterminal">BitwiseOrExpression<SUP><SPAN class="nonterminal-argument"><SPAN
class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LogicalOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LogicalAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LogicalOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">||</CODE>&nbsp;<VAR class="nonterminal">LogicalAndExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Conditional Operator</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ConditionalExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LogicalOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LogicalOrExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">?</CODE>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">:</CODE>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Assignment Operators</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">ConditionalExpression<SUP><SPAN class="nonterminal-argument"><SPAN
class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR>&nbsp;<CODE
class="terminal-keyword">=</CODE>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR>&nbsp;<VAR
class="nonterminal">CompoundAssignment</VAR>&nbsp;<VAR
class="nonterminal">AssignmentExpression<SUP><SPAN class="nonterminal-argument"><SPAN
class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CompoundAssignment</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">*=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">/=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">%=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">+=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">-=</CODE></DIV>
</DIV>
<H3>Expressions</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CommaExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Expression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">CommaExpression<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">OptionalExpression</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">Expression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;&#171;empty&#187;</DIV>
</DIV>
<H2>Statements</H2>
<DIV class="grammar-argument"><VAR class="nonterminal"><SPAN class="nonterminal-argument"><SPAN
class="symbol">w</SPAN></SPAN></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN>&nbsp;{<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">abbrev</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">abbrevNonEmpty</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">abbrevNoShortIf</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">full</SPAN></VAR>}</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">BlocklikeStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">UnterminatedStatement</VAR>&nbsp;<CODE class="terminal-keyword">;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">NonuniformStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">IfStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">WhileStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ForStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LabeledStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NonuniformStatement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">EmptyStatement</VAR>&nbsp;<CODE class="terminal-keyword">;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EmptyStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">UnterminatedStatement</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NonuniformStatement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">EmptyStatement</VAR>&nbsp;<CODE class="terminal-keyword">;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">UnterminatedStatement</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NonuniformStatement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">EmptyStatement</VAR>&nbsp;<CODE class="terminal-keyword">;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">UnterminatedStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EmptyStatement</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NonuniformStatement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN>&nbsp;<VAR
class="nonterminal">EmptyStatement</VAR>&nbsp;<CODE class="terminal-keyword">;</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BlocklikeStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">Block</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">SwitchStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">TryStatement</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">UnterminatedStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">VariableStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ExpressionStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">DoStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ContinueStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">BreakStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ReturnStatement</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ThrowStatement</VAR></DIV>
</DIV>
<H3>Block</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Block</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">{</CODE>&nbsp;<VAR
class="nonterminal">BlockStatements</VAR>&nbsp;<CODE class="terminal-keyword">}</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BlockStatements</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">BlockStatementsPrefix</VAR>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BlockStatementsPrefix</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">BlockStatementsPrefix</VAR>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
</DIV>
<H3>Variable Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">VariableStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">var</CODE>&nbsp;<VAR
class="nonterminal">VariableDeclarationList<SUP><SPAN
class="nonterminal-attribute">allowIn</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">VariableDeclarationList<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">VariableDeclaration<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">VariableDeclarationList<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">,</CODE>&nbsp;<VAR class="nonterminal">VariableDeclaration<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">VariableDeclaration<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">Identifier</SPAN>&nbsp;<CODE
class="terminal-keyword">=</CODE>&nbsp;<VAR class="nonterminal">AssignmentExpression<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">a</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Empty Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">EmptyStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;&#171;empty&#187;</DIV>
</DIV>
<H3>Expression Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ExpressionStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">Expression</VAR></DIV>
</DIV>
<H3>If Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IfStatement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">else</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IfStatement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">else</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IfStatement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol"><EFBFBD></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">else</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IfStatement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">if</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">else</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNoShortIf</SPAN></SUP></VAR></DIV>
</DIV>
<H3>Do-While Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">DoStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">do</CODE>&nbsp;<VAR
class="nonterminal">Statement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR>&nbsp;<CODE
class="terminal-keyword">while</CODE>&nbsp;<CODE class="terminal-keyword">(</CODE>&nbsp;<VAR
class="nonterminal">Expression</VAR>&nbsp;<CODE class="terminal-keyword">)</CODE></DIV>
</DIV>
<H3>While Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">WhileStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">while</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>For Statements</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ForStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">for</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">ForInitializer</VAR>&nbsp;<CODE
class="terminal-keyword">;</CODE>&nbsp;<VAR class="nonterminal">OptionalExpression</VAR>&nbsp;<CODE
class="terminal-keyword">;</CODE>&nbsp;<VAR class="nonterminal">OptionalExpression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">for</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">ForInBinding</VAR>&nbsp;<CODE
class="terminal-keyword">in</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ForInitializer</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">CommaExpression<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">var</CODE>&nbsp;<VAR
class="nonterminal">VariableDeclarationList<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ForInBinding</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LeftSideExpression</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">var</CODE>&nbsp;<VAR
class="nonterminal">VariableDeclaration<SUP><SPAN
class="nonterminal-attribute">noIn</SPAN></SUP></VAR></DIV>
</DIV>
<H3>Continue and Break Statements</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ContinueStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">continue</CODE>&nbsp;<VAR
class="nonterminal">OptionalLabel</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BreakStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">break</CODE>&nbsp;<VAR
class="nonterminal">OptionalLabel</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">OptionalLabel</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
</DIV>
<H3>Labeled Statements</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LabeledStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<SPAN class="terminal">Identifier</SPAN>&nbsp;<CODE
class="terminal-keyword">:</CODE>&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
</DIV>
<H3>Return Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ReturnStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">return</CODE>&nbsp;<VAR
class="nonterminal">OptionalExpression</VAR></DIV>
</DIV>
<H3>Switch Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">SwitchStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">switch</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<CODE class="terminal-keyword">{</CODE>&nbsp;<CODE
class="terminal-keyword">}</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">switch</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<VAR class="nonterminal">Expression</VAR>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<CODE class="terminal-keyword">{</CODE>&nbsp;<VAR
class="nonterminal">CaseGroups</VAR>&nbsp;<VAR class="nonterminal">LastCaseGroup</VAR>&nbsp;<CODE
class="terminal-keyword">}</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CaseGroups</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">CaseGroups</VAR>&nbsp;<VAR
class="nonterminal">CaseGroup</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CaseGroup</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">CaseGuards</VAR>&nbsp;<VAR
class="nonterminal">BlockStatementsPrefix</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LastCaseGroup</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">CaseGuards</VAR>&nbsp;<VAR
class="nonterminal">BlockStatements</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CaseGuards</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">CaseGuard</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">CaseGuards</VAR>&nbsp;<VAR
class="nonterminal">CaseGuard</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CaseGuard</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">case</CODE>&nbsp;<VAR
class="nonterminal">Expression</VAR>&nbsp;<CODE class="terminal-keyword">:</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">default</CODE>&nbsp;<CODE
class="terminal-keyword">:</CODE></DIV>
</DIV>
<H3>Throw Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ThrowStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">throw</CODE>&nbsp;<VAR
class="nonterminal">Expression</VAR></DIV>
</DIV>
<H3>Try Statement</H3>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">TryStatement</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE class="terminal-keyword">try</CODE>&nbsp;<VAR
class="nonterminal">Block</VAR>&nbsp;<VAR class="nonterminal">CatchClauses</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">try</CODE>&nbsp;<VAR
class="nonterminal">Block</VAR>&nbsp;<VAR class="nonterminal">FinallyClause</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE class="terminal-keyword">try</CODE>&nbsp;<VAR
class="nonterminal">Block</VAR>&nbsp;<VAR class="nonterminal">CatchClauses</VAR>&nbsp;<VAR
class="nonterminal">FinallyClause</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CatchClauses</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">CatchClause</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">CatchClauses</VAR>&nbsp;<VAR
class="nonterminal">CatchClause</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">CatchClause</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">catch</CODE>&nbsp;<CODE
class="terminal-keyword">(</CODE>&nbsp;<SPAN class="terminal">Identifier</SPAN>&nbsp;<CODE
class="terminal-keyword">)</CODE>&nbsp;<VAR class="nonterminal">Block</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FinallyClause</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">finally</CODE>&nbsp;<VAR
class="nonterminal">Block</VAR></DIV>
</DIV>
<H2>Functions</H2>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FunctionDeclaration</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<CODE class="terminal-keyword">function</CODE>&nbsp;<SPAN
class="terminal">Identifier</SPAN>&nbsp;<CODE class="terminal-keyword">(</CODE>&nbsp;<VAR
class="nonterminal">FormalParameters</VAR>&nbsp;<CODE class="terminal-keyword">)</CODE>&nbsp;<CODE
class="terminal-keyword">{</CODE>&nbsp;<VAR class="nonterminal">FunctionStatements</VAR>&nbsp;<CODE
class="terminal-keyword">}</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FormalParameters</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">FormalParametersPrefix</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FormalParametersPrefix</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">FormalParametersPrefix</VAR>&nbsp;<CODE
class="terminal-keyword">,</CODE>&nbsp;<SPAN class="terminal">Identifier</SPAN></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FunctionStatements</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">FunctionStatement<SUP><SPAN
class="nonterminal-attribute">abbrev</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">FunctionStatementsPrefix</VAR>&nbsp;<VAR
class="nonterminal">FunctionStatement<SUP><SPAN
class="nonterminal-attribute">abbrevNonEmpty</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FunctionStatementsPrefix</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">FunctionStatement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">FunctionStatementsPrefix</VAR>&nbsp;<VAR
class="nonterminal">FunctionStatement<SUP><SPAN
class="nonterminal-attribute">full</SPAN></SUP></VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FunctionStatement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">Statement<SUP><SPAN
class="nonterminal-argument"><SPAN class="symbol">w</SPAN></SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">FunctionDeclaration</VAR></DIV>
</DIV>
<H2>Programs</H2>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Program</VAR>&nbsp;<SPAN
class="symbol"><3E></SPAN>&nbsp;<VAR class="nonterminal">FunctionStatements</VAR></DIV>
</DIV>
</BODY>
</HTML>