<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>D Grammar</title>
    <style type="text/css">
		body {background-color: #fdf6e3; color: #586e75; }
		.ruleDef { font-weight: bold; }
		.ruleRef { font-weight: bold; }
		.literal { font-weight: normal; font-style: italic; color: #cb4b16; }
		a {color: #586e75; }
		</style>
  </head>
  <body>
<pre class="grammar"><b><a name="addExpression"></a> addExpression</b>:
       <a href="#mulExpression"><b>mulExpression</b></a>
     | <a href="#addExpression"><b>addExpression</b></a> (<font color="red"><i>'+'</i></font> | <font color="red"><i>'-'</i></font> | <font color="red"><i>'~'</i></font>) <a href="#mulExpression"><b>mulExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="aliasDeclaration"></a> aliasDeclaration</b>:
       <font color="red"><i>'alias'</i></font> <a href="#aliasInitializer"><b>aliasInitializer</b></a> (<font color="red"><i>','</i></font> <a href="#aliasInitializer"><b>aliasInitializer</b></a>)* <font color="red"><i>';'</i></font>
     | <font color="red"><i>'alias'</i></font> <a href="#storageClass"><b>storageClass</b></a>* <a href="#type"><b>type</b></a> <a href="#identifierList"><b>identifierList</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="aliasInitializer"></a> aliasInitializer</b>:
       <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a>? <font color="red"><i>'='</i></font> <a href="#storageClass"><b>storageClass</b></a>* <a href="#type"><b>type</b></a>
     | <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a>? <font color="red"><i>'='</i></font> <a href="#functionLiteralExpression"><b>functionLiteralExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="aliasThisDeclaration"></a> aliasThisDeclaration</b>:
     <font color="red"><i>'alias'</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="alignAttribute"></a> alignAttribute</b>:
     <font color="red"><i>'align'</i></font> (<font color="red"><i>'('</i></font> <font color="red"><i>IntegerLiteral</i></font> <font color="red"><i>')'</i></font>)?
     ;</pre><pre class="grammar"><b><a name="andAndExpression"></a> andAndExpression</b>:
       <a href="#orExpression"><b>orExpression</b></a>
     | <a href="#andAndExpression"><b>andAndExpression</b></a> <font color="red"><i>'&amp;&amp;'</i></font> <a href="#orExpression"><b>orExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="andExpression"></a> andExpression</b>:
       <a href="#cmpExpression"><b>cmpExpression</b></a>
     | <a href="#andExpression"><b>andExpression</b></a> <font color="red"><i>'&amp;'</i></font> <a href="#cmpExpression"><b>cmpExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="argumentList"></a> argumentList</b>:
     <a href="#assignExpression"><b>assignExpression</b></a> (<font color="red"><i>','</i></font> <a href="#assignExpression"><b>assignExpression</b></a>?)*
     ;</pre><pre class="grammar"><b><a name="arguments"></a> arguments</b>:
     <font color="red"><i>'('</i></font> <a href="#argumentList"><b>argumentList</b></a>? <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="arrayInitializer"></a> arrayInitializer</b>:
       <font color="red"><i>'['</i></font> <font color="red"><i>']'</i></font>
     | <font color="red"><i>'['</i></font> <a href="#arrayMemberInitialization"><b>arrayMemberInitialization</b></a> (<font color="red"><i>','</i></font> <a href="#arrayMemberInitialization"><b>arrayMemberInitialization</b></a>?)* <font color="red"><i>']'</i></font>
     ;</pre><pre class="grammar"><b><a name="arrayLiteral"></a> arrayLiteral</b>:
     <font color="red"><i>'['</i></font> <a href="#argumentList"><b>argumentList</b></a>? <font color="red"><i>']'</i></font>
     ;</pre><pre class="grammar"><b><a name="arrayMemberInitialization"></a> arrayMemberInitialization</b>:
     (<a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>':'</i></font>)? <a href="#nonVoidInitializer"><b>nonVoidInitializer</b></a>
     ;</pre><pre class="grammar"><b><a name="asmAddExp"></a> asmAddExp</b>:
       <a href="#asmMulExp"><b>asmMulExp</b></a>
     | <a href="#asmAddExp"><b>asmAddExp</b></a> (<font color="red"><i>'+'</i></font> | <font color="red"><i>'-'</i></font>) <a href="#asmMulExp"><b>asmMulExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmAndExp"></a> asmAndExp</b>:
       <a href="#asmEqualExp"><b>asmEqualExp</b></a>
     | <a href="#asmAndExp"><b>asmAndExp</b></a> <font color="red"><i>'&amp;'</i></font> <a href="#asmEqualExp"><b>asmEqualExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmBrExp"></a> asmBrExp</b>:
       <a href="#asmUnaExp"><b>asmUnaExp</b></a>
     | <a href="#asmBrExp"><b>asmBrExp</b></a>? <font color="red"><i>'['</i></font> <a href="#asmExp"><b>asmExp</b></a> <font color="red"><i>']'</i></font>
     ;</pre><pre class="grammar"><b><a name="asmEqualExp"></a> asmEqualExp</b>:
       <a href="#asmRelExp"><b>asmRelExp</b></a>
     | <a href="#asmEqualExp"><b>asmEqualExp</b></a> ('==' | '!=') <a href="#asmRelExp"><b>asmRelExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmExp"></a> asmExp</b>:
     <a href="#asmLogOrExp"><b>asmLogOrExp</b></a> (<font color="red"><i>'?'</i></font> <a href="#asmExp"><b>asmExp</b></a> <font color="red"><i>':'</i></font> <a href="#asmExp"><b>asmExp</b></a>)?
     ;</pre><pre class="grammar"><b><a name="asmInstruction"></a> asmInstruction</b>:
       <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>'align'</i></font> <font color="red"><i>IntegerLiteral</i></font>
     | <font color="red"><i>'align'</i></font> <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>Identifier</i></font> <font color="red"><i>':'</i></font> <a href="#asmInstruction"><b>asmInstruction</b></a>
     | <font color="red"><i>Identifier</i></font> <a href="#operands"><b>operands</b></a>
     | <font color="red"><i>'in'</i></font> <a href="#operands"><b>operands</b></a>
     | <font color="red"><i>'out'</i></font> <a href="#operands"><b>operands</b></a>
     | <font color="red"><i>'int'</i></font> <a href="#operands"><b>operands</b></a>
     ;</pre><pre class="grammar"><b><a name="asmLogAndExp"></a> asmLogAndExp</b>:
     <a href="#asmOrExp"><b>asmOrExp</b></a>
     <a href="#asmLogAndExp"><b>asmLogAndExp</b></a> <font color="red"><i>'&amp;&amp;'</i></font> <a href="#asmOrExp"><b>asmOrExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmLogOrExp"></a> asmLogOrExp</b>:
       <a href="#asmLogAndExp"><b>asmLogAndExp</b></a>
     | <a href="#asmLogOrExp"><b>asmLogOrExp</b></a> '||' <a href="#asmLogAndExp"><b>asmLogAndExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmMulExp"></a> asmMulExp</b>:
       <a href="#asmBrExp"><b>asmBrExp</b></a>
     | <a href="#asmMulExp"><b>asmMulExp</b></a> (<font color="red"><i>'*'</i></font> | <font color="red"><i>'/'</i></font> | <font color="red"><i>'%'</i></font>) <a href="#asmBrExp"><b>asmBrExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmOrExp"></a> asmOrExp</b>:
       <a href="#asmXorExp"><b>asmXorExp</b></a>
     | <a href="#asmOrExp"><b>asmOrExp</b></a> <font color="red"><i>'|'</i></font> <a href="#asmXorExp"><b>asmXorExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmPrimaryExp"></a> asmPrimaryExp</b>:
       <font color="red"><i>IntegerLiteral</i></font>
     | <font color="red"><i>FloatLiteral</i></font>
     | <font color="red"><i>StringLiteral</i></font>
     | <a href="#register"><b>register</b></a>
     | <a href="#identifierChain"><b>identifierChain</b></a>
     | <font color="red"><i>'$'</i></font>
     ;</pre><pre class="grammar"><b><a name="asmRelExp"></a> asmRelExp</b>:
       <a href="#asmShiftExp"><b>asmShiftExp</b></a>
     | <a href="#asmRelExp"><b>asmRelExp</b></a> ((<font color="red"><i>'&lt;'</i></font> | <font color="red"><i>'&lt;='</i></font> | <font color="red"><i>'&gt;'</i></font> | <font color="red"><i>'&gt;='</i></font>) <a href="#asmShiftExp"><b>asmShiftExp</b></a>)?
     ;</pre><pre class="grammar"><b><a name="asmShiftExp"></a> asmShiftExp</b>:
     <a href="#asmAddExp"><b>asmAddExp</b></a>
     <a href="#asmShiftExp"><b>asmShiftExp</b></a> (<font color="red"><i>'&lt;&lt;'</i></font> | <font color="red"><i>'&gt;&gt;'</i></font> | <font color="red"><i>'&gt;&gt;&gt;'</i></font>) <a href="#asmAddExp"><b>asmAddExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmStatement"></a> asmStatement</b>:
     <font color="red"><i>'asm'</i></font> <a href="#functionAttributes"><b>functionAttributes</b></a>? <font color="red"><i>'{'</i></font> <a href="#asmInstruction"><b>asmInstruction</b></a>+ <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="asmTypePrefix"></a> asmTypePrefix</b>:
       <font color="red"><i>Identifier</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'byte'</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'short'</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'int'</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'float'</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'double'</i></font> <font color="red"><i>Identifier</i></font>?
     | <font color="red"><i>'real'</i></font> <font color="red"><i>Identifier</i></font>?
     ;</pre><pre class="grammar"><b><a name="asmUnaExp"></a> asmUnaExp</b>:
       <a href="#asmTypePrefix"><b>asmTypePrefix</b></a> <a href="#asmExp"><b>asmExp</b></a>
     | <font color="red"><i>Identifier</i></font> <a href="#asmExp"><b>asmExp</b></a>
     | <font color="red"><i>'+'</i></font> <a href="#asmUnaExp"><b>asmUnaExp</b></a>
     | <font color="red"><i>'-'</i></font> <a href="#asmUnaExp"><b>asmUnaExp</b></a>
     | <font color="red"><i>'!'</i></font> <a href="#asmUnaExp"><b>asmUnaExp</b></a>
     | <font color="red"><i>'~'</i></font> <a href="#asmUnaExp"><b>asmUnaExp</b></a>
     | <a href="#asmPrimaryExp"><b>asmPrimaryExp</b></a>
     ;</pre><pre class="grammar"><b><a name="asmXorExp"></a> asmXorExp</b>:
       <a href="#asmAndExp"><b>asmAndExp</b></a>
     | <a href="#asmXorExp"><b>asmXorExp</b></a> <font color="red"><i>'^'</i></font> <a href="#asmAndExp"><b>asmAndExp</b></a>
     ;</pre><pre class="grammar"><b><a name="assertExpression"></a> assertExpression</b>:
     <font color="red"><i>'assert'</i></font> <font color="red"><i>'('</i></font> <a href="#assignExpression"><b>assignExpression</b></a> (<font color="red"><i>','</i></font> <a href="#assignExpression"><b>assignExpression</b></a>)? <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="assignExpression"></a> assignExpression</b>:
     <a href="#ternaryExpression"><b>ternaryExpression</b></a> (<a href="#assignOperator"><b>assignOperator</b></a> <a href="#expression"><b>expression</b></a>)?
     ;
<b><a name="assignOperator"></a> assignOperator</b>:
       <font color="red"><i>'='</i></font>
     | <font color="red"><i>'&gt;&gt;&gt;='</i></font>
     | <font color="red"><i>'&gt;&gt;='</i></font>
     | <font color="red"><i>'&lt;&lt;='</i></font>
     | <font color="red"><i>'+='</i></font>
     | <font color="red"><i>'-='</i></font>
     | <font color="red"><i>'*='</i></font>
     | <font color="red"><i>'%='</i></font>
     | <font color="red"><i>'&amp;='</i></font>
     | <font color="red"><i>'/='</i></font>
     | <font color="red"><i>'|='</i></font>
     | <font color="red"><i>'^^='</i></font>
     | <font color="red"><i>'^='</i></font>
     | <font color="red"><i>'~='</i></font>
     ;</pre><pre class="grammar"><b><a name="assocArrayLiteral"></a> assocArrayLiteral</b>:
     <font color="red"><i>'['</i></font> <a href="#keyValuePairs"><b>keyValuePairs</b></a> <font color="red"><i>']'</i></font>
     ;</pre><pre class="grammar"><b><a name="atAttribute"></a> atAttribute</b>:
       <font color="red"><i>'@'</i></font> <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>'@'</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>'('</i></font> <a href="#argumentList"><b>argumentList</b></a>? <font color="red"><i>')'</i></font>
     | <font color="red"><i>'@'</i></font> <font color="red"><i>'('</i></font> <a href="#argumentList"><b>argumentList</b></a> <font color="red"><i>')'</i></font>
     | <font color="red"><i>'@'</i></font> <a href="#TemplateInstance"><b>TemplateInstance</b></a>
     ;</pre><pre class="grammar"><b><a name="attribute"></a> attribute</b>:
     | <a href="#pragmaExpression"><b>pragmaExpression</b></a>
     | <a href="#alignAttribute"><b>alignAttribute</b></a>
     | <a href="#deprecated"><b>deprecated</b></a>
     | <a href="#atAttribute"><b>atAttribute</b></a>
     | <a href="#linkageAttribute"><b>linkageAttribute</b></a>
     | <font color="red"><i>'export'</i></font>
     | <font color="red"><i>'package'</i></font>
     | <font color="red"><i>'private'</i></font>
     | <font color="red"><i>'protected'</i></font>
     | <font color="red"><i>'public'</i></font>
     | <font color="red"><i>'static'</i></font>
     | <font color="red"><i>'extern'</i></font>
     | <font color="red"><i>'abstract'</i></font>
     | <font color="red"><i>'final'</i></font>
     | <font color="red"><i>'override'</i></font>
     | <font color="red"><i>'synchronized'</i></font>
     | <font color="red"><i>'auto'</i></font>
     | <font color="red"><i>'scope'</i></font>
     | <font color="red"><i>'const'</i></font>
     | <font color="red"><i>'immutable'</i></font>
     | <font color="red"><i>'inout'</i></font>
     | <font color="red"><i>'shared'</i></font>
     | <font color="red"><i>'_gshared'</i></font>
     | <font color="red"><i>'nothrow'</i></font>
     | <font color="red"><i>'pure'</i></font>
     | <font color="red"><i>'ref'</i></font>
     ;</pre><pre class="grammar"><b><a name="attributeDeclaration"></a> attributeDeclaration</b>:
     <a href="#&lt;i&gt;attribute&lt;/i&gt;"><b><i>attribute</i></b></a> <font color="red"><i>':'</i></font>
     ;</pre><pre class="grammar"><b><a name="autoDeclaration"></a> autoDeclaration</b>:
     <a href="#storageClass"><b>storageClass</b></a>+ <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#initializer"><b>initializer</b></a> (<font color="red"><i>','</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#initializer"><b>initializer</b></a>)* <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="blockStatement"></a> blockStatement</b>:
     <font color="red"><i>'{'</i></font> <a href="#declarationsAndStatements"><b>declarationsAndStatements</b></a>? <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="bodyStatement"></a> bodyStatement</b>:
     <font color="red"><i>'body'</i></font> <a href="#blockStatement"><b>blockStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="breakStatement"></a> breakStatement</b>:
     <font color="red"><i>'break'</i></font> <font color="red"><i>Identifier</i></font>? <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="baseClass"></a> baseClass</b>:
     <a href="#type2"><b>type2</b></a>
     ;</pre><pre class="grammar"><b><a name="baseClassList"></a> baseClassList</b>:
     <a href="#baseClass"><b>baseClass</b></a> (<font color="red"><i>','</i></font> <a href="#baseClass"><b>baseClass</b></a>)*
     ;</pre><pre class="grammar"><b><a name="builtinType"></a> builtinType</b>:
      <font color="red"><i>'bool'</i></font>
    | <font color="red"><i>'byte'</i></font>
    | <font color="red"><i>'ubyte'</i></font>
    | <font color="red"><i>'short'</i></font>
    | <font color="red"><i>'ushort'</i></font>
    | <font color="red"><i>'int'</i></font>
    | <font color="red"><i>'uint'</i></font>
    | <font color="red"><i>'long'</i></font>
    | <font color="red"><i>'ulong'</i></font>
    | <font color="red"><i>'char'</i></font>
    | <font color="red"><i>'wchar'</i></font>
    | <font color="red"><i>'dchar'</i></font>
    | <font color="red"><i>'float'</i></font>
    | <font color="red"><i>'double'</i></font>
    | <font color="red"><i>'real'</i></font>
    | <font color="red"><i>'ifloat'</i></font>
    | <font color="red"><i>'idouble'</i></font>
    | <font color="red"><i>'ireal'</i></font>
    | <font color="red"><i>'cfloat'</i></font>
    | <font color="red"><i>'cdouble'</i></font>
    | <font color="red"><i>'creal'</i></font>
    | <font color="red"><i>'void'</i></font>
    ;</pre><pre class="grammar"><b><a name="caseRangeStatement"></a> caseRangeStatement</b>:
     <font color="red"><i>'case'</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>':'</i></font> <font color="red"><i>'...'</i></font> <font color="red"><i>'case'</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>':'</i></font> <a href="#declarationsAndStatements"><b>declarationsAndStatements</b></a>
     ;</pre><pre class="grammar"><b><a name="caseStatement"></a> caseStatement</b>:
     <font color="red"><i>'case'</i></font> <a href="#&lt;i&gt;argumentList&lt;/i&gt;"><b><i>argumentList</i></b></a> <font color="red"><i>':'</i></font> <a href="#declarationsAndStatements"><b>declarationsAndStatements</b></a>
     ;</pre><pre class="grammar"><b><a name="castExpression"></a> castExpression</b>:
     <font color="red"><i>'cast'</i></font> <font color="red"><i>'('</i></font> (<a href="#type"><b>type</b></a> | <a href="#castQualifier"><b>castQualifier</b></a>)? <font color="red"><i>')'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="castQualifier"></a> castQualifier</b>:
      <font color="red"><i>'const'</i></font>
    | <font color="red"><i>'const'</i></font> <font color="red"><i>'shared'</i></font>
    | <font color="red"><i>'immutable'</i></font>
    | <font color="red"><i>'inout'</i></font>
    | <font color="red"><i>'inout'</i></font> <font color="red"><i>'shared'</i></font>
    | <font color="red"><i>'shared'</i></font>
    | <font color="red"><i>'shared'</i></font> <font color="red"><i>'const'</i></font>
    | <font color="red"><i>'shared'</i></font> <font color="red"><i>'inout'</i></font>
    ;</pre><pre class="grammar"><b><a name="catch"></a> catch</b>:
     <font color="red"><i>'catch'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>Identifier</i></font>? <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="catches"></a> catches</b>:
       <a href="#catch"><b>catch</b></a>+
     | <a href="#catch"><b>catch</b></a>* <a href="#lastCatch"><b>lastCatch</b></a>
     ;</pre><pre class="grammar"><b><a name="classDeclaration"></a> classDeclaration</b>:
       <font color="red"><i>'class'</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>';'</i></font>
     | <font color="red"><i>'class'</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#structBody"><b>structBody</b></a>
     | <font color="red"><i>'class'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? (<a href="#structBody"><b>structBody</b></a> | <font color="red"><i>';'</i></font>)
     | <font color="red"><i>'class'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#structBody"><b>structBody</b></a>
     | <font color="red"><i>'class'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#constraint"><b>constraint</b></a>? <a href="#structBody"><b>structBody</b></a>
     ;</pre><pre class="grammar"><b><a name="cmpExpression"></a> cmpExpression</b>:
       <a href="#shiftExpression"><b>shiftExpression</b></a>
     | <a href="#equalExpression"><b>equalExpression</b></a>
     | <a href="#identityExpression"><b>identityExpression</b></a>
     | <a href="#relExpression"><b>relExpression</b></a>
     | <a href="#inExpression"><b>inExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="compileCondition"></a> compileCondition</b>:
       <a href="#versionCondition"><b>versionCondition</b></a>
     | <a href="#debugCondition"><b>debugCondition</b></a>
     | <a href="#staticIfCondition"><b>staticIfCondition</b></a>
     ;</pre><pre class="grammar"><b><a name="conditionalDeclaration"></a> conditionalDeclaration</b>:
       <a href="#compileCondition"><b>compileCondition</b></a> <a href="#declaration"><b>declaration</b></a>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>+
     | <a href="#compileCondition"><b>compileCondition</b></a> <a href="#declaration"><b>declaration</b></a> <font color="red"><i>'else'</i></font> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>*
     | <a href="#compileCondition"><b>compileCondition</b></a> <a href="#declaration"><b>declaration</b></a> <font color="red"><i>'else'</i></font> <a href="#declaration"><b>declaration</b></a>
     | <a href="#compileCondition"><b>compileCondition</b></a> <a href="#declaration"><b>declaration</b></a> <font color="red"><i>'else'</i></font> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font> <font color="red"><i>'else'</i></font> <a href="#declaration"><b>declaration</b></a>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font> <font color="red"><i>'else'</i></font> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font> <font color="red"><i>'else'</i></font> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>*
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>+ <font color="red"><i>'else'</i></font> <a href="#declaration"><b>declaration</b></a>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>+ <font color="red"><i>'else'</i></font> <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     | <a href="#compileCondition"><b>compileCondition</b></a> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>+ <font color="red"><i>'else'</i></font> <font color="red"><i>':'</i></font> <a href="#declaration"><b>declaration</b></a>*
     ;</pre><pre class="grammar"><b><a name="conditionalStatement"></a> conditionalStatement</b>:
     <a href="#compileCondition"><b>compileCondition</b></a> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a> (<font color="red"><i>'else'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>)?
     ;</pre><pre class="grammar"><b><a name="constraint"></a> constraint</b>:
     <font color="red"><i>'if'</i></font> <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="constructor"></a> constructor</b>:
       <font color="red"><i>'this'</i></font> <a href="#templateParameters"><b>templateParameters</b></a>? <a href="#parameters"><b>parameters</b></a> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>* <a href="#constraint"><b>constraint</b></a>? (<a href="#functionBody"><b>functionBody</b></a> | <font color="red"><i>';'</i></font>)
     ;</pre><pre class="grammar"><b><a name="continueStatement"></a> continueStatement</b>:
     <font color="red"><i>'continue'</i></font> <font color="red"><i>Identifier</i></font>? <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="debugCondition"></a> debugCondition</b>:
     <font color="red"><i>'debug'</i></font> (<font color="red"><i>'('</i></font> (<font color="red"><i>IntegerLiteral</i></font> | <font color="red"><i>Identifier</i></font>) <font color="red"><i>')'</i></font>)?
     ;</pre><pre class="grammar"><b><a name="debugSpecification"></a> debugSpecification</b>:
     <font color="red"><i>'debug'</i></font> <font color="red"><i>'='</i></font> (<font color="red"><i>Identifier</i></font> | <font color="red"><i>IntegerLiteral</i></font>) <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="declaration"></a> declaration</b>:
       <a href="#attribute"><b>attribute</b></a>* <a href="#declaration2"><b>declaration2</b></a>
     | <a href="#attribute"><b>attribute</b></a>+ <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     ;
 <b><a name="declaration2"></a> declaration2</b>:
       <a href="#aliasDeclaration"><b>aliasDeclaration</b></a>
     | <a href="#aliasThisDeclaration"><b>aliasThisDeclaration</b></a>
     | <a href="#anonymousEnumDeclaration"><b>anonymousEnumDeclaration</b></a>
     | <a href="#attributeDeclaration"><b>attributeDeclaration</b></a>
     | <a href="#classDeclaration"><b>classDeclaration</b></a>
     | <a href="#conditionalDeclaration"><b>conditionalDeclaration</b></a>
     | <a href="#constructor"><b>constructor</b></a>
     | <a href="#debugSpecification"><b>debugSpecification</b></a>
     | <a href="#destructor"><b>destructor</b></a>
     | <a href="#enumDeclaration"><b>enumDeclaration</b></a>
     | <a href="#eponymousTemplateDeclaration"><b>eponymousTemplateDeclaration</b></a>
     | <a href="#functionDeclaration"><b>functionDeclaration</b></a>
     | <a href="#importDeclaration"><b>importDeclaration</b></a>
     | <a href="#interfaceDeclaration"><b>interfaceDeclaration</b></a>
     | <a href="#invariant"><b>invariant</b></a>
     | <a href="#mixinDeclaration"><b>mixinDeclaration</b></a>
     | <a href="#mixinTemplateDeclaration"><b>mixinTemplateDeclaration</b></a>
     | <a href="#pragmaDeclaration"><b>pragmaDeclaration</b></a>
     | <a href="#sharedStaticConstructor"><b>sharedStaticConstructor</b></a>
     | <a href="#sharedStaticDestructor"><b>sharedStaticDestructor</b></a>
     | <a href="#staticAssertDeclaration"><b>staticAssertDeclaration</b></a>
     | <a href="#staticConstructor"><b>staticConstructor</b></a>
     | <a href="#staticDestructor"><b>staticDestructor</b></a>
     | <a href="#structDeclaration"><b>structDeclaration</b></a>
     | <a href="#templateDeclaration"><b>templateDeclaration</b></a>
     | <a href="#unionDeclaration"><b>unionDeclaration</b></a>
     | <a href="#unittest"><b>unittest</b></a>
     | <a href="#variableDeclaration"><b>variableDeclaration</b></a>
     | <a href="#versionSpecification"><b>versionSpecification</b></a>
     ;</pre><pre class="grammar"><b><a name="declarationsAndStatements"></a> declarationsAndStatements</b>:
     <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>+
     ;</pre><pre class="grammar"><b><a name="declarationOrStatement"></a> declarationOrStatement</b>:
       <a href="#declaration"><b>declaration</b></a>
     | <a href="#statement"><b>statement</b></a>
     ;</pre><pre class="grammar"><b><a name="declarator"></a> declarator</b>:
       <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#initializer"><b>initializer</b></a>
     | <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <font color="red"><i>'='</i></font> <a href="#initializer"><b>initializer</b></a>
     ;</pre><pre class="grammar"><b><a name="defaultStatement"></a> defaultStatement</b>:
     <font color="red"><i>'default'</i></font> <font color="red"><i>':'</i></font> <a href="#declarationsAndStatements"><b>declarationsAndStatements</b></a>
     ;</pre><pre class="grammar"><b><a name="deleteExpression"></a> deleteExpression</b>:
     <font color="red"><i>'delete'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="deprecated"></a> deprecated</b>:
     <font color="red"><i>'deprecated'</i></font> (<font color="red"><i>'('</i></font> <font color="red"><i>StringLiteral</i></font>+ <font color="red"><i>')'</i></font>)?
     ;</pre><pre class="grammar"><b><a name="destructor"></a> destructor</b>:
     <font color="red"><i>'~'</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>* (<a href="#functionBody"><b>functionBody</b></a> | <font color="red"><i>';'</i></font>)
     ;</pre><pre class="grammar"><b><a name="doStatement"></a> doStatement</b>:
     <font color="red"><i>'do'</i></font> <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a> <font color="red"><i>'while'</i></font> <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="enumBody"></a> enumBody</b>:
     <font color="red"><i>'{'</i></font> <a href="#enumMember"><b>enumMember</b></a> (<font color="red"><i>','</i></font> <a href="#enumMember"><b>enumMember</b></a>?)* <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="anonymousEnumMember"></a> anonymousEnumMember</b>:
       <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font> <font color="red"><i>'='</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     | <font color="red"><i>identifier</i></font> <font color="red"><i>'='</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     | <font color="red"><i>identifier</i></font>
     ;</pre><pre class="grammar"><b><a name="anonymousEnumDeclaration"></a> anonymousEnumDeclaration</b>:
     <font color="red"><i>'enum'</i></font> (<font color="red"><i>':'</i></font> <a href="#type"><b>type</b></a>)? <font color="red"><i>'{'</i></font> <a href="#anonymousEnumMember"><b>anonymousEnumMember</b></a>+ <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="enumDeclaration"></a> enumDeclaration</b>:
       <font color="red"><i>'enum'</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#type"><b>type</b></a>)? <font color="red"><i>';'</i></font>
     | <font color="red"><i>'enum'</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#type"><b>type</b></a>)? <a href="#enumBody"><b>enumBody</b></a>
     ;</pre><pre class="grammar"><b><a name="enumMember"></a> enumMember</b>:
       <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="eponymousTemplateDeclaration"></a> eponymousTemplateDeclaration</b>:
     <font color="red"><i>'enum'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <font color="red"><i>'='</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="equalExpression"></a> equalExpression</b>:
     <a href="#shiftExpression"><b>shiftExpression</b></a> (<font color="red"><i>'=='</i></font> | <font color="red"><i>'!='</i></font>) <a href="#shiftExpression"><b>shiftExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="expression"></a> expression</b>:
     <a href="#assignExpression"><b>assignExpression</b></a> (<font color="red"><i>','</i></font> <a href="#assignExpression"><b>assignExpression</b></a>)*
     ;</pre><pre class="grammar"><b><a name="expressionStatement"></a> expressionStatement</b>:
     <a href="#&lt;i&gt;expression&lt;/i&gt;"><b><i>expression</i></b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="finalSwitchStatement"></a> finalSwitchStatement</b>:
     <font color="red"><i>'final'</i></font> <a href="#switchStatement"><b>switchStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="finally"></a> finally</b>:
     <font color="red"><i>'finally'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="forStatement"></a> forStatement</b>:
     <font color="red"><i>'for'</i></font> <font color="red"><i>'('</i></font> (<a href="#declaration"><b>declaration</b></a> | <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>) <a href="#expression"><b>expression</b></a>? <font color="red"><i>';'</i></font> <a href="#expression"><b>expression</b></a>? <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="foreachStatement"></a> foreachStatement</b>:
       (<font color="red"><i>'foreach'</i></font> | <font color="red"><i>'foreach_reverse'</i></font>) <font color="red"><i>'('</i></font> <a href="#foreachTypeList"><b>foreachTypeList</b></a> <font color="red"><i>';'</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     | (<font color="red"><i>'foreach'</i></font> | <font color="red"><i>'foreach_reverse'</i></font>) <font color="red"><i>'('</i></font> <a href="#foreachType"><b>foreachType</b></a> <font color="red"><i>';'</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>'..'</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="foreachType"></a> foreachType</b>:
       <font color="red"><i>'ref'</i></font>? <a href="#typeConstructors"><b>typeConstructors</b></a>? <a href="#type"><b>type</b></a>? <font color="red"><i>Identifier</i></font>
     | <a href="#typeConstructors"><b>typeConstructors</b></a>? <font color="red"><i>'ref'</i></font>? <a href="#type"><b>type</b></a>? <font color="red"><i>Identifier</i></font>
     ;</pre><pre class="grammar"><b><a name="foreachTypeList"></a> foreachTypeList</b>:
     <a href="#foreachType"><b>foreachType</b></a> (<font color="red"><i>','</i></font> <a href="#foreachType"><b>foreachType</b></a>)*
     ;</pre><pre class="grammar"><b><a name="functionAttribute"></a> functionAttribute</b>:
       <a href="#atAttribute"><b>atAttribute</b></a>
     | <font color="red"><i>'pure'</i></font>
     | <font color="red"><i>'nothrow'</i></font>
     ;</pre><pre class="grammar"><b><a name="functionBody"></a> functionBody</b>:
       <a href="#blockStatement"><b>blockStatement</b></a>
     | (<a href="#inStatement"><b>inStatement</b></a> | <a href="#outStatement"><b>outStatement</b></a> | <a href="#outStatement"><b>outStatement</b></a> <a href="#inStatement"><b>inStatement</b></a> | <a href="#inStatement"><b>inStatement</b></a> <a href="#outStatement"><b>outStatement</b></a>)? <a href="#bodyStatement"><b>bodyStatement</b></a>?
     ;</pre><pre class="grammar"><b><a name="functionCallExpression"></a> functionCallExpression</b>:
      <a href="#symbol"><b>symbol</b></a> <a href="#arguments"><b>arguments</b></a>
      <a href="#unaryExpression"><b>unaryExpression</b></a> <a href="#arguments"><b>arguments</b></a>
     | <a href="#type"><b>type</b></a> <a href="#arguments"><b>arguments</b></a>
     ;</pre><pre class="grammar"><b><a name="functionDeclaration"></a> functionDeclaration</b>:
       (<a href="#storageClass"><b>storageClass</b></a>+ | <a href="#type"><b>type</b></a>) <font color="red"><i>Identifier</i></font> <a href="#parameters"><b>parameters</b></a> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>* (<a href="#functionBody"><b>functionBody</b></a> | <font color="red"><i>';'</i></font>)
     | (<a href="#storageClass"><b>storageClass</b></a>+ | <a href="#type"><b>type</b></a>) <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#parameters"><b>parameters</b></a> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>* <a href="#constraint"><b>constraint</b></a>? (<a href="#functionBody"><b>functionBody</b></a> | <font color="red"><i>';'</i></font>)
     ;</pre><pre class="grammar"><b><a name="functionLiteralExpression"></a> functionLiteralExpression</b>:
     | <font color="red"><i>'delegate'</i></font> <a href="#type"><b>type</b></a>? (<a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>*)? <a href="#functionBody"><b>functionBody</b></a>
     | <font color="red"><i>'function'</i></font> <a href="#type"><b>type</b></a>? (<a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>*)? <a href="#functionBody"><b>functionBody</b></a>
     | <a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>* <a href="#functionBody"><b>functionBody</b></a>
     | <a href="#functionBody"><b>functionBody</b></a>
     | <font color="red"><i>Identifier</i></font> <font color="red"><i>'=&gt;'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     | <font color="red"><i>'function'</i></font> <a href="#type"><b>type</b></a>? <a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>* <font color="red"><i>'=&gt;'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     | <font color="red"><i>'delegate'</i></font> <a href="#type"><b>type</b></a>? <a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>* <font color="red"><i>'=&gt;'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     | <a href="#parameters"><b>parameters</b></a> <a href="#functionAttribute"><b>functionAttribute</b></a>* <font color="red"><i>'=&gt;'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="gotoStatement"></a> gotoStatement</b>:
     <font color="red"><i>'goto'</i></font> (<font color="red"><i>Identifier</i></font> | <font color="red"><i>'default'</i></font> | <font color="red"><i>'case'</i></font> <a href="#expression"><b>expression</b></a>?) <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="identifierChain"></a> identifierChain</b>:
     <font color="red"><i>Identifier</i></font> (<font color="red"><i>'.'</i></font> <font color="red"><i>Identifier</i></font>)*
     ;</pre><pre class="grammar"><b><a name="identifierList"></a> identifierList</b>:
     <font color="red"><i>Identifier</i></font> (<font color="red"><i>','</i></font> <font color="red"><i>Identifier</i></font>)*
     ;</pre><pre class="grammar"><b><a name="identifierOrTemplateChain"></a> identifierOrTemplateChain</b>:
     <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a> (<font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a>)*
     ;</pre><pre class="grammar"><b><a name="identifierOrTemplateInstance"></a> identifierOrTemplateInstance</b>:
       <font color="red"><i>Identifier</i></font>
     | <a href="#templateInstance"><b>templateInstance</b></a>
     ;</pre><pre class="grammar"><b><a name="identityExpression"></a> identityExpression</b>:
     <a href="#shiftExpression"><b>shiftExpression</b></a> (<font color="red"><i>'is'</i></font> | (<font color="red"><i>'!'</i></font> <font color="red"><i>'is'</i></font>)) <a href="#shiftExpression"><b>shiftExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="ifStatement"></a> ifStatement</b>:
     <font color="red"><i>'if'</i></font> <font color="red"><i>'('</i></font> <a href="#ifCondition"><b>ifCondition</b></a> <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a> (<font color="red"><i>'else'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>)?
<b><a name="ifCondition"></a> ifCondition</b>:
       <font color="red"><i>'auto'</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#expression"><b>expression</b></a>
     | <a href="#type"><b>type</b></a> <font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font> <a href="#expression"><b>expression</b></a>
     | <a href="#expression"><b>expression</b></a>
     ;</pre><pre class="grammar"><b><a name="importBind"></a> importBind</b>:
     <font color="red"><i>Identifier</i></font> (<font color="red"><i>'='</i></font> <font color="red"><i>Identifier</i></font>)?
     ;</pre><pre class="grammar"><b><a name="importBindings"></a> importBindings</b>:
     <a href="#&lt;i&gt;singleImport&lt;/i&gt;"><b><i>singleImport</i></b></a> <font color="red"><i>':'</i></font> <a href="#importBind"><b>importBind</b></a> (<font color="red"><i>','</i></font> <a href="#importBind"><b>importBind</b></a>)*
     ;</pre><pre class="grammar"><b><a name="importDeclaration"></a> importDeclaration</b>:
       <font color="red"><i>'import'</i></font> <a href="#singleImport"><b>singleImport</b></a> (<font color="red"><i>','</i></font> <a href="#singleImport"><b>singleImport</b></a>)* (<font color="red"><i>','</i></font> <a href="#importBindings"><b>importBindings</b></a>)? <font color="red"><i>';'</i></font>
     | <font color="red"><i>'import'</i></font> <a href="#importBindings"><b>importBindings</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="importExpression"></a> importExpression</b>:
     <font color="red"><i>'import'</i></font> <font color="red"><i>'('</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="index"></a> index</b>:
     <a href="#assignExpression"><b>assignExpression</b></a> (<font color="red"><i>'..'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>)?
     ;
 </pre><pre class="grammar"><b><a name="indexExpression"></a> indexExpression</b>:
       <a href="#&lt;i&gt;unaryExpression&lt;/i&gt;"><b><i>unaryExpression</i></b></a> <font color="red"><i>'['</i></font> <font color="red"><i>']'</i></font>
     | <a href="#&lt;i&gt;unaryExpression&lt;/i&gt;"><b><i>unaryExpression</i></b></a> <font color="red"><i>'['</i></font> <a href="#index"><b>index</b></a> (<font color="red"><i>','</i></font> <a href="#index"><b>index</b></a>)* <font color="red"><i>']'</i></font>
     ;
 </pre><pre class="grammar"><b><a name="inExpression"></a> inExpression</b>:
     <a href="#shiftExpression"><b>shiftExpression</b></a> (<font color="red"><i>'in'</i></font> | (<font color="red"><i>'!'</i></font> <font color="red"><i>'in'</i></font>)) <a href="#shiftExpression"><b>shiftExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="inStatement"></a> inStatement</b>:
     <font color="red"><i>'in'</i></font> <a href="#blockStatement"><b>blockStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="initializer"></a> initializer</b>:
       <font color="red"><i>'void'</i></font>
     | <a href="#nonVoidInitializer"><b>nonVoidInitializer</b></a>
     ;</pre><pre class="grammar"><b><a name="interfaceDeclaration"></a> interfaceDeclaration</b>:
       <font color="red"><i>'interface'</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>';'</i></font>
     | <font color="red"><i>'interface'</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#structBody"><b>structBody</b></a>
     | <font color="red"><i>'interface'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#structBody"><b>structBody</b></a>
     | <font color="red"><i>'interface'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> (<font color="red"><i>':'</i></font> <a href="#baseClassList"><b>baseClassList</b></a>)? <a href="#constraint"><b>constraint</b></a>? <a href="#structBody"><b>structBody</b></a>
     ;</pre><pre class="grammar"><b><a name="invariant"></a> invariant</b>:
     <font color="red"><i>'invariant'</i></font> (<font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font>)? <a href="#blockStatement"><b>blockStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="isExpression"></a> isExpression</b>:
     <font color="red"><i>'is'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font>? <font color="red"><i>')'</i></font>
     <font color="red"><i>'is'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font>? <font color="red"><i>':'</i></font> <a href="#typeSpecialization"><b>typeSpecialization</b></a> <font color="red"><i>')'</i></font>
     <font color="red"><i>'is'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font>? <font color="red"><i>'='</i></font> <a href="#typeSpecialization"><b>typeSpecialization</b></a> <font color="red"><i>')'</i></font>
     <font color="red"><i>'is'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font>? <font color="red"><i>':'</i></font> <a href="#typeSpecialization"><b>typeSpecialization</b></a> <font color="red"><i>','</i></font> <a href="#templateParameterList"><b>templateParameterList</b></a> <font color="red"><i>')'</i></font>
     <font color="red"><i>'is'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>identifier</i></font>? <font color="red"><i>'='</i></font> <a href="#typeSpecialization"><b>typeSpecialization</b></a> <font color="red"><i>','</i></font> <a href="#templateParameterList"><b>templateParameterList</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="keyValuePair"></a> keyValuePair</b>:
     <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>':'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="keyValuePairs"></a> keyValuePairs</b>:
     <a href="#keyValuePair"><b>keyValuePair</b></a> (<font color="red"><i>','</i></font> <a href="#keyValuePair"><b>keyValuePair</b></a>)* <font color="red"><i>','</i></font>?
     ;</pre><pre class="grammar"><b><a name="labeledStatement"></a> labeledStatement</b>:
     <font color="red"><i>Identifier</i></font> <font color="red"><i>':'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>?
     ;</pre><pre class="grammar"><b><a name="lastCatch"></a> lastCatch</b>:
     <font color="red"><i>'catch'</i></font> <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>
     ;</pre><pre class="grammar"><b><a name="linkageAttribute"></a> linkageAttribute</b>:
     <font color="red"><i>'extern'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>'++'</i></font> (<font color="red"><i>','</i></font> <a href="#identifierChain"><b>identifierChain</b></a>)?)? <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="memberFunctionAttribute"></a> memberFunctionAttribute</b>:
       <a href="#functionAttribute"><b>functionAttribute</b></a>
     | <font color="red"><i>'immutable'</i></font>
     | <font color="red"><i>'inout'</i></font>
     | <font color="red"><i>'shared'</i></font>
     | <font color="red"><i>'const'</i></font>
     | <font color="red"><i>'return'</i></font>
     ;</pre><pre class="grammar"><b><a name="mixinDeclaration"></a> mixinDeclaration</b>:
       <a href="#mixinExpression"><b>mixinExpression</b></a> <font color="red"><i>';'</i></font>
     | <a href="#templateMixinExpression"><b>templateMixinExpression</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="mixinExpression"></a> mixinExpression</b>:
     <font color="red"><i>'mixin'</i></font> <font color="red"><i>'('</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="mixinTemplateDeclaration"></a> mixinTemplateDeclaration</b>:
     <font color="red"><i>'mixin'</i></font> <a href="#templateDeclaration"><b>templateDeclaration</b></a>
     ;</pre><pre class="grammar"><b><a name="mixinTemplateName"></a> mixinTemplateName</b>:
       <a href="#symbol"><b>symbol</b></a>
     | <a href="#typeofExpression"><b>typeofExpression</b></a> <font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateChain"><b>identifierOrTemplateChain</b></a>
     ;</pre><pre class="grammar"><b><a name="module"></a> module</b>:
     <a href="#moduleDeclaration"><b>moduleDeclaration</b></a>? <a href="#declaration"><b>declaration</b></a>*
     ;</pre><pre class="grammar"><b><a name="moduleDeclaration"></a> moduleDeclaration</b>:
     <a href="#deprecated"><b>deprecated</b></a>? <font color="red"><i>'module'</i></font> <a href="#identifierChain"><b>identifierChain</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="mulExpression"></a> mulExpression</b>:
       <a href="#powExpression"><b>powExpression</b></a>
     | <a href="#mulExpression"><b>mulExpression</b></a> (<font color="red"><i>'*'</i></font> | <font color="red"><i>'/'</i></font> | <font color="red"><i>'%'</i></font>) <a href="#powExpression"><b>powExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="newAnonClassExpression"></a> newAnonClassExpression</b>:
     <font color="red"><i>'new'</i></font> <a href="#arguments"><b>arguments</b></a>? <font color="red"><i>'class'</i></font> <a href="#arguments"><b>arguments</b></a>? <a href="#baseClassList"><b>baseClassList</b></a>? <a href="#structBody"><b>structBody</b></a>
     ;</pre><pre class="grammar"><b><a name="newExpression"></a> newExpression</b>:
       <font color="red"><i>'new'</i></font> <a href="#type"><b>type</b></a> ((<font color="red"><i>'['</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>']'</i></font>) | <a href="#arguments"><b>arguments</b></a>)?
     | <a href="#newAnonClassExpression"><b>newAnonClassExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="nonVoidInitializer"></a> nonVoidInitializer</b>:
       <a href="#assignExpression"><b>assignExpression</b></a>
     | <a href="#arrayInitializer"><b>arrayInitializer</b></a>
     | <a href="#structInitializer"><b>structInitializer</b></a>
     ;</pre><pre class="grammar"><b><a name="operands"></a> operands</b>:
       <a href="#asmExp"><b>asmExp</b></a>
     | <a href="#asmExp"><b>asmExp</b></a> <font color="red"><i>','</i></font> <a href="#operands"><b>operands</b></a>
     ;</pre><pre class="grammar"><b><a name="orExpression"></a> orExpression</b>:
       <a href="#xorExpression"><b>xorExpression</b></a>
     | <a href="#orExpression"><b>orExpression</b></a> <font color="red"><i>'|'</i></font> <a href="#xorExpression"><b>xorExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="orOrExpression"></a> orOrExpression</b>:
       <a href="#andAndExpression"><b>andAndExpression</b></a>
     | <a href="#orOrExpression"><b>orOrExpression</b></a> <font color="red"><i>'||'</i></font> <a href="#andAndExpression"><b>andAndExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="outStatement"></a> outStatement</b>:
     <font color="red"><i>'out'</i></font> (<font color="red"><i>'('</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>')'</i></font>)? <a href="#blockStatement"><b>blockStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="parameter"></a> parameter</b>:
     <a href="#parameterAttribute"><b>parameterAttribute</b></a>* <a href="#type"><b>type</b></a>
     <a href="#parameterAttribute"><b>parameterAttribute</b></a>* <a href="#type"><b>type</b></a> <font color="red"><i>Identifier</i></font>? <font color="red"><i>'...'</i></font>
     <a href="#parameterAttribute"><b>parameterAttribute</b></a>* <a href="#type"><b>type</b></a> <font color="red"><i>Identifier</i></font>? (<font color="red"><i>'='</i></font> <a href="#assignExpression"><b>assignExpression</b></a>)?
     ;</pre><pre class="grammar"><b><a name="parameterAttribute"></a> parameterAttribute</b>:
       <a href="#typeConstructor"><b>typeConstructor</b></a>
     | <font color="red"><i>'final'</i></font>
     | <font color="red"><i>'in'</i></font>
     | <font color="red"><i>'lazy'</i></font>
     | <font color="red"><i>'out'</i></font>
     | <font color="red"><i>'ref'</i></font>
     | <font color="red"><i>'scope'</i></font>
     | <font color="red"><i>'auto'</i></font>
     | <font color="red"><i>'return'</i></font>
     ;</pre><pre class="grammar"><b><a name="parameters"></a> parameters</b>:
       <font color="red"><i>'('</i></font> <a href="#parameter"><b>parameter</b></a> (<font color="red"><i>','</i></font> <a href="#parameter"><b>parameter</b></a>)* (<font color="red"><i>','</i></font> <font color="red"><i>'...'</i></font>)? <font color="red"><i>')'</i></font>
     | <font color="red"><i>'('</i></font> <font color="red"><i>'...'</i></font> <font color="red"><i>')'</i></font>
     | <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="postblit"></a> postblit</b>:
     <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>')'</i></font> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>* (<a href="#functionBody"><b>functionBody</b></a> | <font color="red"><i>';'</i></font>)
     ;</pre><pre class="grammar"><b><a name="powExpression"></a> powExpression</b>:
       <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <a href="#powExpression"><b>powExpression</b></a> <font color="red"><i>'^^'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="pragmaDeclaration"></a> pragmaDeclaration</b>:
     <a href="#pragmaExpression"><b>pragmaExpression</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="pragmaExpression"></a> pragmaExpression</b>:
     <a href="#'pragma'"><b>'pragma'</b></a> <font color="red"><i>'('</i></font> <font color="red"><i>Identifier</i></font> (<font color="red"><i>','</i></font> <a href="#argumentList"><b>argumentList</b></a>)? <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="primaryExpression"></a> primaryExpression</b>:
       <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a>
     | <font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a>
     | <a href="#typeConstructor"><b>typeConstructor</b></a> <font color="red"><i>'('</i></font> <a href="#basicType"><b>basicType</b></a> <font color="red"><i>')'</i></font> <font color="red"><i>'.'</i></font> <font color="red"><i>Identifier</i></font>
     | <a href="#basicType"><b>basicType</b></a> <font color="red"><i>'.'</i></font> <font color="red"><i>Identifier</i></font>
     | <a href="#basicType"><b>basicType</b></a> <a href="#arguments"><b>arguments</b></a>
     | <a href="#typeofExpression"><b>typeofExpression</b></a>
     | <a href="#typeidExpression"><b>typeidExpression</b></a>
     | <a href="#vector"><b>vector</b></a>
     | <a href="#arrayLiteral"><b>arrayLiteral</b></a>
     | <a href="#assocArrayLiteral"><b>assocArrayLiteral</b></a>
     | <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font>
     | <a href="#isExpression"><b>isExpression</b></a>
     | <a href="#functionLiteralExpression"><b>functionLiteralExpression</b></a>
     | <a href="#traitsExpression"><b>traitsExpression</b></a>
     | <a href="#mixinExpression"><b>mixinExpression</b></a>
     | <a href="#importExpression"><b>importExpression</b></a>
     | <font color="red"><i>'$'</i></font>
     | <font color="red"><i>'this'</i></font>
     | <font color="red"><i>'super'</i></font>
     | <font color="red"><i>'null'</i></font>
     | <font color="red"><i>'true'</i></font>
     | <font color="red"><i>'false'</i></font>
     | <font color="red"><i>'__DATE__'</i></font>
     | <font color="red"><i>'__TIME__'</i></font>
     | <font color="red"><i>'__TIMESTAMP__'</i></font>
     | <font color="red"><i>'__VENDOR__'</i></font>
     | <font color="red"><i>'__VERSION__'</i></font>
     | <font color="red"><i>'__FILE__'</i></font>
     | <font color="red"><i>'__LINE__'</i></font>
     | <font color="red"><i>'__MODULE__'</i></font>
     | <font color="red"><i>'__FUNCTION__'</i></font>
     | <font color="red"><i>'__PRETTY_FUNCTION__'</i></font>
     | <font color="red"><i>IntegerLiteral</i></font>
     | <font color="red"><i>FloatLiteral</i></font>
     | <font color="red"><i>StringLiteral</i></font>+
     | <font color="red"><i>CharacterLiteral</i></font>
     ;</pre><pre class="grammar"><b><a name="register"></a> register</b>:
       <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>Identifier</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>IntegerLiteral</i></font> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="relExpression"></a> relExpression</b>:
       <a href="#shiftExpression"><b>shiftExpression</b></a>
     | <a href="#relExpression"><b>relExpression</b></a> <a href="#relOperator"><b>relOperator</b></a> <a href="#shiftExpression"><b>shiftExpression</b></a>
     ;
<b><a name="relOperator"></a> relOperator</b>:
       <font color="red"><i>'&lt;'</i></font>
     | <font color="red"><i>'&lt;='</i></font>
     | <font color="red"><i>'&gt;'</i></font>
     | <font color="red"><i>'&gt;='</i></font>
     | <font color="red"><i>'!&lt;&gt;='</i></font>
     | <font color="red"><i>'!&lt;&gt;'</i></font>
     | <font color="red"><i>'&lt;&gt;'</i></font>
     | <font color="red"><i>'&lt;&gt;='</i></font>
     | <font color="red"><i>'!&gt;'</i></font>
     | <font color="red"><i>'!&gt;='</i></font>
     | <font color="red"><i>'!&lt;'</i></font>
     | <font color="red"><i>'!&lt;='</i></font>
     ;</pre><pre class="grammar"><b><a name="returnStatement"></a> returnStatement</b>:
     <font color="red"><i>'return'</i></font> <a href="#expression"><b>expression</b></a>? <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="scopeGuardStatement"></a> scopeGuardStatement</b>:
     <font color="red"><i>'scope'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>')'</i></font> <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>
     ;</pre><pre class="grammar"><b><a name="sharedStaticConstructor"></a> sharedStaticConstructor</b>:
     <font color="red"><i>'shared'</i></font> <font color="red"><i>'static'</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font> <a href="#functionBody"><b>functionBody</b></a>
     ;</pre><pre class="grammar"><b><a name="sharedStaticDestructor"></a> sharedStaticDestructor</b>:
     <font color="red"><i>'shared'</i></font> <font color="red"><i>'static'</i></font> <font color="red"><i>'~'</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font> <a href="#functionBody"><b>functionBody</b></a>
     ;</pre><pre class="grammar"><b><a name="shiftExpression"></a> shiftExpression</b>:
       <a href="#addExpression"><b>addExpression</b></a>
     | <a href="#shiftExpression"><b>shiftExpression</b></a> (<font color="red"><i>'&lt;&lt;'</i></font> | <font color="red"><i>'&gt;&gt;'</i></font> | <font color="red"><i>'&gt;&gt;&gt;'</i></font>) <a href="#addExpression"><b>addExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="singleImport"></a> singleImport</b>:
     (<font color="red"><i>Identifier</i></font> <font color="red"><i>'='</i></font>)? <a href="#identifierChain"><b>identifierChain</b></a>
     ;</pre><pre class="grammar"><b><a name="statement"></a> statement</b>:
       <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>
     | <a href="#caseStatement"><b>caseStatement</b></a>
     | <a href="#caseRangeStatement"><b>caseRangeStatement</b></a>
     | <a href="#defaultStatement"><b>defaultStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="statementNoCaseNoDefault"></a> statementNoCaseNoDefault</b>:
       <a href="#labeledStatement"><b>labeledStatement</b></a>
     | <a href="#blockStatement"><b>blockStatement</b></a>
     | <a href="#ifStatement"><b>ifStatement</b></a>
     | <a href="#whileStatement"><b>whileStatement</b></a>
     | <a href="#doStatement"><b>doStatement</b></a>
     | <a href="#forStatement"><b>forStatement</b></a>
     | <a href="#foreachStatement"><b>foreachStatement</b></a>
     | <a href="#switchStatement"><b>switchStatement</b></a>
     | <a href="#finalSwitchStatement"><b>finalSwitchStatement</b></a>
     | <a href="#continueStatement"><b>continueStatement</b></a>
     | <a href="#breakStatement"><b>breakStatement</b></a>
     | <a href="#returnStatement"><b>returnStatement</b></a>
     | <a href="#gotoStatement"><b>gotoStatement</b></a>
     | <a href="#withStatement"><b>withStatement</b></a>
     | <a href="#synchronizedStatement"><b>synchronizedStatement</b></a>
     | <a href="#tryStatement"><b>tryStatement</b></a>
     | <a href="#throwStatement"><b>throwStatement</b></a>
     | <a href="#scopeGuardStatement"><b>scopeGuardStatement</b></a>
     | <a href="#asmStatement"><b>asmStatement</b></a>
     | <a href="#conditionalStatement"><b>conditionalStatement</b></a>
     | <a href="#staticAssertStatement"><b>staticAssertStatement</b></a>
     | <a href="#versionSpecification"><b>versionSpecification</b></a>
     | <a href="#debugSpecification"><b>debugSpecification</b></a>
     | <a href="#expressionStatement"><b>expressionStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="staticAssertDeclaration"></a> staticAssertDeclaration</b>:
     <a href="#staticAssertStatement"><b>staticAssertStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="staticAssertStatement"></a> staticAssertStatement</b>:
     <font color="red"><i>'static'</i></font> <a href="#assertExpression"><b>assertExpression</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="staticConstructor"></a> staticConstructor</b>:
     <font color="red"><i>'static'</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font> <a href="#functionBody"><b>functionBody</b></a>
     ;</pre><pre class="grammar"><b><a name="staticDestructor"></a> staticDestructor</b>:
     <font color="red"><i>'static'</i></font> <font color="red"><i>'~'</i></font> <font color="red"><i>'this'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>')'</i></font> <a href="#functionBody"><b>functionBody</b></a>
     ;</pre><pre class="grammar"><b><a name="staticIfCondition"></a> staticIfCondition</b>:
     <font color="red"><i>'static'</i></font> <font color="red"><i>'if'</i></font> <font color="red"><i>'('</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="storageClass"></a> storageClass</b>:
       <a href="#alignAttribute"><b>alignAttribute</b></a>
     | <a href="#linkageAttribute"><b>linkageAttribute</b></a>
     | <a href="#atAttribute"><b>atAttribute</b></a>
     | <a href="#typeConstructor"><b>typeConstructor</b></a>
     | <a href="#deprecated"><b>deprecated</b></a>
     | <font color="red"><i>'abstract'</i></font>
     | <font color="red"><i>'auto'</i></font>
     | <font color="red"><i>'enum'</i></font>
     | <font color="red"><i>'extern'</i></font>
     | <font color="red"><i>'final'</i></font>
     | <font color="red"><i>'nothrow'</i></font>
     | <font color="red"><i>'override'</i></font>
     | <font color="red"><i>'pure'</i></font>
     | <font color="red"><i>'ref'</i></font>
     | <font color="red"><i>'__gshared'</i></font>
     | <font color="red"><i>'scope'</i></font>
     | <font color="red"><i>'static'</i></font>
     | <font color="red"><i>'synchronized'</i></font>
     ;</pre><pre class="grammar"><b><a name="structBody"></a> structBody</b>:
     <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="structDeclaration"></a> structDeclaration</b>:
     <font color="red"><i>'struct'</i></font> <font color="red"><i>Identifier</i></font>? (<a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? <a href="#structBody"><b>structBody</b></a> | (<a href="#structBody"><b>structBody</b></a> | <font color="red"><i>';'</i></font>))
     ;</pre><pre class="grammar"><b><a name="structInitializer"></a> structInitializer</b>:
     <font color="red"><i>'{'</i></font> <a href="#structMemberInitializers"><b>structMemberInitializers</b></a>? <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="structMemberInitializer"></a> structMemberInitializer</b>:
     (<font color="red"><i>Identifier</i></font> <font color="red"><i>':'</i></font>)? <a href="#nonVoidInitializer"><b>nonVoidInitializer</b></a>
     ;</pre><pre class="grammar"><b><a name="structMemberInitializers"></a> structMemberInitializers</b>:
     <a href="#structMemberInitializer"><b>structMemberInitializer</b></a> (<font color="red"><i>','</i></font> <a href="#structMemberInitializer"><b>structMemberInitializer</b></a>?)*
     ;</pre><pre class="grammar"><b><a name="switchStatement"></a> switchStatement</b>:
     <font color="red"><i>'switch'</i></font> <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <a href="#statement"><b>statement</b></a>
     ;</pre><pre class="grammar"><b><a name="symbol"></a> symbol</b>:
     <font color="red"><i>'.'</i></font>? <a href="#identifierOrTemplateChain"><b>identifierOrTemplateChain</b></a>
     ;</pre><pre class="grammar"><b><a name="synchronizedStatement"></a> synchronizedStatement</b>:
     <font color="red"><i>'synchronized'</i></font> (<font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font>)? <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>
     ;</pre><pre class="grammar"><b><a name="templateAliasParameter"></a> templateAliasParameter</b>:
     <font color="red"><i>'alias'</i></font> <a href="#type"><b>type</b></a>? <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> (<a href="#type"><b>type</b></a> | <a href="#assignExpression"><b>assignExpression</b></a>))? (<font color="red"><i>'='</i></font> (<a href="#type"><b>type</b></a> | <a href="#assignExpression"><b>assignExpression</b></a>))?
     ;</pre><pre class="grammar"><b><a name="templateArgument"></a> templateArgument</b>:
       <a href="#type"><b>type</b></a>
     | <a href="#assignExpression"><b>assignExpression</b></a>
     ;</pre><pre class="grammar"><b><a name="templateArgumentList"></a> templateArgumentList</b>:
     <a href="#templateArgument"><b>templateArgument</b></a> (<font color="red"><i>','</i></font> <a href="#templateArgument"><b>templateArgument</b></a>?)*
     ;</pre><pre class="grammar"><b><a name="templateArguments"></a> templateArguments</b>:
     <font color="red"><i>'!'</i></font> (<font color="red"><i>'('</i></font> <a href="#templateArgumentList"><b>templateArgumentList</b></a>? <font color="red"><i>')'</i></font>) | <a href="#templateSingleArgument"><b>templateSingleArgument</b></a>
     ;</pre><pre class="grammar"><b><a name="templateDeclaration"></a> templateDeclaration</b>:
       <font color="red"><i>'template'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? <font color="red"><i>'{'</i></font> <a href="#declaration"><b>declaration</b></a>* <font color="red"><i>'}'</i></font>
     ;</pre><pre class="grammar"><b><a name="templateInstance"></a> templateInstance</b>:
     <font color="red"><i>Identifier</i></font> <a href="#templateArguments"><b>templateArguments</b></a>
     ;</pre><pre class="grammar"><b><a name="templateMixinExpression"></a> templateMixinExpression</b>:
     <font color="red"><i>'mixin'</i></font> <a href="#mixinTemplateName"><b>mixinTemplateName</b></a> <a href="#templateArguments"><b>templateArguments</b></a>? <font color="red"><i>Identifier</i></font>?
     ;</pre><pre class="grammar"><b><a name="templateParameter"></a> templateParameter</b>:
       <a href="#templateTypeParameter"><b>templateTypeParameter</b></a>
     | <a href="#templateValueParameter"><b>templateValueParameter</b></a>
     | <a href="#templateAliasParameter"><b>templateAliasParameter</b></a>
     | <a href="#templateTupleParameter"><b>templateTupleParameter</b></a>
     | <a href="#templateThisParameter"><b>templateThisParameter</b></a>
     ;</pre><pre class="grammar"><b><a name="templateParameterList"></a> templateParameterList</b>:
     <a href="#templateParameter"><b>templateParameter</b></a> (<font color="red"><i>','</i></font> <a href="#templateParameter"><b>templateParameter</b></a>?)*
     ;</pre><pre class="grammar"><b><a name="templateParameters"></a> templateParameters</b>:
     <font color="red"><i>'('</i></font> <a href="#templateParameterList"><b>templateParameterList</b></a>? <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="templateSingleArgument"></a> templateSingleArgument</b>:
       <a href="#builtinType"><b>builtinType</b></a>
     | <font color="red"><i>Identifier</i></font>
     | <font color="red"><i>CharacterLiteral</i></font>
     | <font color="red"><i>StringLiteral</i></font>
     | <font color="red"><i>IntegerLiteral</i></font>
     | <font color="red"><i>FloatLiteral</i></font>
     | <font color="red"><i>'true'</i></font>
     | <font color="red"><i>'false'</i></font>
     | <font color="red"><i>'null'</i></font>
     | <font color="red"><i>'this'</i></font>
     | <font color="red"><i>'__DATE__'</i></font>
     | <font color="red"><i>'__TIME__'</i></font>
     | <font color="red"><i>'__TIMESTAMP__'</i></font>
     | <font color="red"><i>'__VENDOR__'</i></font>
     | <font color="red"><i>'__VERSION__'</i></font>
     | <font color="red"><i>'__FILE__'</i></font>
     | <font color="red"><i>'__LINE__'</i></font>
     | <font color="red"><i>'__MODULE__'</i></font>
     | <font color="red"><i>'__FUNCTION__'</i></font>
     | <font color="red"><i>'__PRETTY_FUNCTION__'</i></font>
     ;</pre><pre class="grammar"><b><a name="templateThisParameter"></a> templateThisParameter</b>:
     <font color="red"><i>'this'</i></font> <a href="#templateTypeParameter"><b>templateTypeParameter</b></a>
     ;</pre><pre class="grammar"><b><a name="templateTupleParameter"></a> templateTupleParameter</b>:
     <font color="red"><i>Identifier</i></font> <font color="red"><i>'...'</i></font>
     ;</pre><pre class="grammar"><b><a name="templateTypeParameter"></a> templateTypeParameter</b>:
     <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#type"><b>type</b></a>)? (<font color="red"><i>'='</i></font> <a href="#type"><b>type</b></a>)?
     ;</pre><pre class="grammar"><b><a name="templateValueParameter"></a> templateValueParameter</b>:
     <a href="#type"><b>type</b></a> <font color="red"><i>Identifier</i></font> (<font color="red"><i>':'</i></font> <a href="#assignExpression"><b>assignExpression</b></a>)? <a href="#templateValueParameterDefault"><b>templateValueParameterDefault</b></a>?
     ;</pre><pre class="grammar"><b><a name="templateValueParameterDefault"></a> templateValueParameterDefault</b>:
     <font color="red"><i>'='</i></font> (<font color="red"><i>'__FILE__'</i></font> | <font color="red"><i>'__MODULE__'</i></font> | <font color="red"><i>'__LINE__'</i></font> | <font color="red"><i>'__FUNCTION__'</i></font> | <font color="red"><i>'__PRETTY_FUNCTION__'</i></font> | <a href="#assignExpression"><b>assignExpression</b></a>)
     ;</pre><pre class="grammar"><b><a name="ternaryExpression"></a> ternaryExpression</b>:
     <a href="#orOrExpression"><b>orOrExpression</b></a> (<font color="red"><i>'?'</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>':'</i></font> <a href="#ternaryExpression"><b>ternaryExpression</b></a>)?
     ;</pre><pre class="grammar"><b><a name="throwStatement"></a> throwStatement</b>:
     <font color="red"><i>'throw'</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="traitsExpression"></a> traitsExpression</b>:
     <font color="red"><i>'__traits'</i></font> <font color="red"><i>'('</i></font> <font color="red"><i>Identifier</i></font> <font color="red"><i>','</i></font> <a href="#TemplateArgumentList"><b>TemplateArgumentList</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="tryStatement"></a> tryStatement</b>:
     <font color="red"><i>'try'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a> (<a href="#catches"><b>catches</b></a> | <a href="#catches"><b>catches</b></a> <a href="#finally"><b>finally</b></a> | <a href="#finally"><b>finally</b></a>)
     ;</pre><pre class="grammar"><b><a name="type"></a> type</b>:
     <a href="#typeConstructors"><b>typeConstructors</b></a>? <a href="#type2"><b>type2</b></a> <a href="#typeSuffix"><b>typeSuffix</b></a>*
     ;</pre><pre class="grammar"><b><a name="type2"></a> type2</b>:
       <a href="#builtinType"><b>builtinType</b></a>
     | <a href="#symbol"><b>symbol</b></a>
     | <a href="#typeofExpression"><b>typeofExpression</b></a> (<font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateChain"><b>identifierOrTemplateChain</b></a>)?
     | <a href="#typeConstructor"><b>typeConstructor</b></a> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>')'</i></font>
     | <a href="#vector"><b>vector</b></a>
     ;</pre><pre class="grammar"><b><a name="typeConstructor"></a> typeConstructor</b>:
       <font color="red"><i>'const'</i></font>
     | <font color="red"><i>'immutable'</i></font>
     | <font color="red"><i>'inout'</i></font>
     | <font color="red"><i>'shared'</i></font>
     ;</pre><pre class="grammar"><b><a name="typeConstructors"></a> typeConstructors</b>:
     <a href="#typeConstructor"><b>typeConstructor</b></a>+
     ;</pre><pre class="grammar"><b><a name="typeSpecialization"></a> typeSpecialization</b>:
       <a href="#type"><b>type</b></a>
     | <font color="red"><i>'struct'</i></font>
     | <font color="red"><i>'union'</i></font>
     | <font color="red"><i>'class'</i></font>
     | <font color="red"><i>'interface'</i></font>
     | <font color="red"><i>'enum'</i></font>
     | <font color="red"><i>'function'</i></font>
     | <font color="red"><i>'delegate'</i></font>
     | <font color="red"><i>'super'</i></font>
     | <font color="red"><i>'const'</i></font>
     | <font color="red"><i>'immutable'</i></font>
     | <font color="red"><i>'inout'</i></font>
     | <font color="red"><i>'shared'</i></font>
     | <font color="red"><i>'return'</i></font>
     | <font color="red"><i>'typedef'</i></font>
     | <font color="red"><i>'__parameters'</i></font>
     ;</pre><pre class="grammar"><b><a name="typeSuffix"></a> typeSuffix</b>:
       <font color="red"><i>'*'</i></font>
     | <font color="red"><i>'['</i></font> <a href="#type"><b>type</b></a>? <font color="red"><i>']'</i></font>
     | <font color="red"><i>'['</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>']'</i></font>
     | <font color="red"><i>'['</i></font> <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>'..'</i></font>  <a href="#assignExpression"><b>assignExpression</b></a> <font color="red"><i>']'</i></font>
     | (<font color="red"><i>'delegate'</i></font> | <font color="red"><i>'function'</i></font>) <a href="#parameters"><b>parameters</b></a> <a href="#memberFunctionAttribute"><b>memberFunctionAttribute</b></a>*
     ;</pre><pre class="grammar"><b><a name="typeidExpression"></a> typeidExpression</b>:
     <font color="red"><i>'typeid'</i></font> <font color="red"><i>'('</i></font> (<a href="#type"><b>type</b></a> | <a href="#expression"><b>expression</b></a>) <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="typeofExpression"></a> typeofExpression</b>:
     <font color="red"><i>'typeof'</i></font> <font color="red"><i>'('</i></font> (<a href="#expression"><b>expression</b></a> | <font color="red"><i>'return'</i></font>) <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="unaryExpression"></a> unaryExpression</b>:
       <a href="#primaryExpression"><b>primaryExpression</b></a>
     | <font color="red"><i>'&amp;'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'!'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'*'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'+'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'-'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'~'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'++'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <font color="red"><i>'--'</i></font> <a href="#unaryExpression"><b>unaryExpression</b></a>
     | <a href="#newExpression"><b>newExpression</b></a>
     | <a href="#deleteExpression"><b>deleteExpression</b></a>
     | <a href="#castExpression"><b>castExpression</b></a>
     | <a href="#assertExpression"><b>assertExpression</b></a>
     | <a href="#functionCallExpression"><b>functionCallExpression</b></a>
     | <a href="#indexExpression"><b>indexExpression</b></a>
     | <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>')'</i></font> <font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a>
     | <a href="#unaryExpression"><b>unaryExpression</b></a> <font color="red"><i>'.'</i></font> <a href="#newExpression"><b>newExpression</b></a>
     | <a href="#unaryExpression"><b>unaryExpression</b></a> <font color="red"><i>'.'</i></font> <a href="#identifierOrTemplateInstance"><b>identifierOrTemplateInstance</b></a>
     | <a href="#unaryExpression"><b>unaryExpression</b></a> <font color="red"><i>'--'</i></font>
     | <a href="#unaryExpression"><b>unaryExpression</b></a> <font color="red"><i>'++'</i></font>
     ;</pre><pre class="grammar"><b><a name="unionDeclaration"></a> unionDeclaration</b>:
       <font color="red"><i>'union'</i></font> <font color="red"><i>Identifier</i></font> <a href="#templateParameters"><b>templateParameters</b></a> <a href="#constraint"><b>constraint</b></a>? <a href="#structBody"><b>structBody</b></a>
     | <font color="red"><i>'union'</i></font> <font color="red"><i>Identifier</i></font> (<a href="#structBody"><b>structBody</b></a> | <font color="red"><i>';'</i></font>)
     | <font color="red"><i>'union'</i></font> <a href="#structBody"><b>structBody</b></a>
     ;</pre><pre class="grammar"><b><a name="unittest"></a> unittest</b>:
     <font color="red"><i>'unittest'</i></font> <a href="#blockStatement"><b>blockStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="variableDeclaration"></a> variableDeclaration</b>:
       <a href="#storageClass"><b>storageClass</b></a>* <a href="#&lt;i&gt;type&lt;/i&gt;"><b><i>type</i></b></a> <a href="#declarator"><b>declarator</b></a> (<font color="red"><i>','</i></font> <a href="#declarator"><b>declarator</b></a>)* <font color="red"><i>';'</i></font>
     | <a href="#storageClass"><b>storageClass</b></a>* <a href="#&lt;i&gt;type&lt;/i&gt;"><b><i>type</i></b></a> <font color="red"><i>identifier</i></font> <font color="red"><i>'='</i></font> <a href="#functionBody"><b>functionBody</b></a> <font color="red"><i>';'</i></font>
     | <a href="#autoDeclaration"><b>autoDeclaration</b></a>
     ;</pre><pre class="grammar"><b><a name="vector"></a> vector</b>:
     <font color="red"><i>'__vector'</i></font> <font color="red"><i>'('</i></font> <a href="#type"><b>type</b></a> <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="versionCondition"></a> versionCondition</b>:
     <font color="red"><i>'version'</i></font> <font color="red"><i>'('</i></font> (<font color="red"><i>IntegerLiteral</i></font> | <font color="red"><i>Identifier</i></font> | <font color="red"><i>'unittest'</i></font> | <font color="red"><i>'assert'</i></font>) <font color="red"><i>')'</i></font>
     ;</pre><pre class="grammar"><b><a name="versionSpecification"></a> versionSpecification</b>:
     <font color="red"><i>'version'</i></font> <font color="red"><i>'='</i></font> (<font color="red"><i>Identifier</i></font> | <font color="red"><i>IntegerLiteral</i></font>) <font color="red"><i>';'</i></font>
     ;</pre><pre class="grammar"><b><a name="whileStatement"></a> whileStatement</b>:
     <font color="red"><i>'while'</i></font> <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <a href="#declarationOrStatement"><b>declarationOrStatement</b></a>
     ;</pre><pre class="grammar"><b><a name="withStatement"></a> withStatement</b>:
     <font color="red"><i>'with'</i></font> <font color="red"><i>'('</i></font> <a href="#expression"><b>expression</b></a> <font color="red"><i>')'</i></font> <a href="#statementNoCaseNoDefault"><b>statementNoCaseNoDefault</b></a>
     ;</pre><pre class="grammar"><b><a name="xorExpression"></a> xorExpression</b>:
       <a href="#andExpression"><b>andExpression</b></a>
     | <a href="#xorExpression"><b>xorExpression</b></a> <font color="red"><i>'^'</i></font> <a href="#andExpression"><b>andExpression</b></a>
     ;</pre>	</body>
</html>