gecko-dev/js2/semantics/ECMA Lexer.html

1414 строки
81 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>ECMA Lexer</TITLE>
<LINK rel="stylesheet" href="styles.css">
</HEAD>
<BODY>
<H2>Comments</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LineComment</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>/</CODE>&nbsp;<CODE>/</CODE>&nbsp;<VAR
class="nonterminal">LineCommentCharacters</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LineCommentCharacters</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">LineCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">NonTerminator</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">NonTerminator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">AnyCharacter</VAR>&nbsp;<B>except</B>&nbsp;<VAR
class="nonterminal">LineTerminator</VAR></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">SingleLineBlockComment</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>/</CODE>&nbsp;<CODE>*</CODE>&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<CODE>*</CODE>&nbsp;<CODE>/</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">NonTerminatorOrSlash</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">PreSlashCharacters</VAR>&nbsp;<CODE>/</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">PreSlashCharacters</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">NonTerminatorOrAsteriskOrSlash</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">PreSlashCharacters</VAR>&nbsp;<CODE>/</CODE></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">NonTerminatorOrSlash</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonTerminator</VAR>&nbsp;<B>except</B>&nbsp;<CODE>/</CODE></DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">NonTerminatorOrAsteriskOrSlash</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonTerminator</VAR>&nbsp;<B>except</B>&nbsp;<CODE>*</CODE>&nbsp;|&nbsp;<CODE>/</CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">MultiLineBlockComment</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>/</CODE>&nbsp;<CODE>*</CODE>&nbsp;<VAR
class="nonterminal">MultiLineBlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<CODE>*</CODE>&nbsp;<CODE>/</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">MultiLineBlockCommentCharacters</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">LineTerminator</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">MultiLineBlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">BlockCommentCharacters</VAR>&nbsp;<VAR
class="nonterminal">LineTerminator</VAR></DIV>
</DIV>
<H2>White space</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">WhiteSpace</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">WhiteSpace</VAR>&nbsp;<VAR
class="nonterminal">WhiteSpaceCharacter</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">WhiteSpace</VAR>&nbsp;<VAR
class="nonterminal">SingleLineBlockComment</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">WhiteSpaceCharacter</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE><SPAN
class="control">&#171;TAB&#187;</SPAN></CODE>&nbsp;|&nbsp;<CODE><SPAN
class="control">&#171;VT&#187;</SPAN></CODE>&nbsp;|&nbsp;<CODE><SPAN
class="control">&#171;FF&#187;</SPAN></CODE>&nbsp;|&nbsp;<CODE><SPAN
class="control">&#171;SP&#187;</SPAN></CODE></DIV>
<H2>Line breaks</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LineBreak</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LineTerminator</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LineComment</VAR>&nbsp;<VAR
class="nonterminal">LineTerminator</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">MultiLineBlockComment</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">LineTerminator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE><SPAN
class="control">&#171;LF&#187;</SPAN></CODE>&nbsp;|&nbsp;<CODE><SPAN
class="control">&#171;CR&#187;</SPAN></CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">LineBreaks</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LineBreak</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LineBreaks</VAR>&nbsp;<VAR
class="nonterminal">WhiteSpace</VAR>&nbsp;<VAR class="nonterminal">LineBreak</VAR></DIV>
</DIV>
<H2>Tokens</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NextToken</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR class="nonterminal">WhiteSpace</VAR>&nbsp;<VAR
class="nonterminal">Token</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Token</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">LineBreaks</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">IdentifierOrReservedWord</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">Punctuator</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">NumericLiteral</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringLiteral</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">EndOfInput</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">EndOfInput</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<SPAN class="terminal">End</SPAN></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">LineComment</VAR>&nbsp;<SPAN
class="terminal">End</SPAN></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">type</SPAN>&nbsp;<SPAN
class="type-name">Token</SPAN><BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="type-expression"><SPAN
class="semantic-keyword">oneof</SPAN>&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">identifier</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">reservedWord</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">punctuator</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">number</SPAN>:&nbsp;<SPAN class="type-name">Double</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">string</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">lineBreaks</SPAN>;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="field-name">end</SPAN>}</SPAN></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">Token</SPAN>[<VAR class="nonterminal">NextToken</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Token</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">NextToken</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">WhiteSpace</VAR>&nbsp;<VAR class="nonterminal">Token</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">Token</SPAN>[<VAR class="nonterminal">Token</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">Token</SPAN>[<VAR class="nonterminal">Token</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Token</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">LineBreaks</VAR>]&nbsp;=&nbsp;<SPAN class="field-name">lineBreaks</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">IdentifierOrReservedWord</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">Token</SPAN>[<VAR class="nonterminal">IdentifierOrReservedWord</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">Punctuator</VAR>]&nbsp;=&nbsp;<SPAN
class="field-name">punctuator</SPAN>&nbsp;<SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NumericLiteral</VAR>]&nbsp;=&nbsp;<SPAN
class="field-name">number</SPAN>&nbsp;<SPAN class="action-name">DoubleValue</SPAN>[<VAR
class="nonterminal">NumericLiteral</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringLiteral</VAR>]&nbsp;=&nbsp;<SPAN
class="field-name">string</SPAN>&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringLiteral</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">Token</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">EndOfInput</VAR>]&nbsp;=&nbsp;<SPAN class="field-name">end</SPAN></P>
<H2>Keywords</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IdentifierName</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">IdentifierLetter</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">IdentifierName</VAR>&nbsp;<VAR
class="nonterminal">IdentifierLetter</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">IdentifierName</VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">IdentifierLetter</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV
class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>A</CODE>&nbsp;|&nbsp;<CODE>B</CODE>&nbsp;|&nbsp;<CODE>C</CODE>&nbsp;|&nbsp;<CODE>D</CODE>&nbsp;|&nbsp;<CODE>E</CODE>&nbsp;|&nbsp;<CODE>F</CODE>&nbsp;|&nbsp;<CODE>G</CODE>&nbsp;|&nbsp;<CODE>H</CODE>&nbsp;|&nbsp;<CODE>I</CODE>&nbsp;|&nbsp;<CODE>J</CODE>&nbsp;|&nbsp;<CODE>K</CODE>&nbsp;|&nbsp;<CODE>L</CODE>&nbsp;|&nbsp;<CODE>M</CODE>&nbsp;|&nbsp;<CODE>N</CODE>&nbsp;|&nbsp;<CODE>O</CODE>&nbsp;|&nbsp;<CODE>P</CODE>&nbsp;|&nbsp;<CODE>Q</CODE>&nbsp;|&nbsp;<CODE>R</CODE>&nbsp;|&nbsp;<CODE>S</CODE>&nbsp;|&nbsp;<CODE>T</CODE>&nbsp;|&nbsp;<CODE>U</CODE>&nbsp;|&nbsp;<CODE>V</CODE>&nbsp;|&nbsp;<CODE>W</CODE>&nbsp;|&nbsp;<CODE>X</CODE>&nbsp;|&nbsp;<CODE>Y</CODE>&nbsp;|&nbsp;<CODE>Z</CODE></DIV>
<DIV
class="grammar-rhs">|&nbsp;&nbsp;<CODE>a</CODE>&nbsp;|&nbsp;<CODE>b</CODE>&nbsp;|&nbsp;<CODE>c</CODE>&nbsp;|&nbsp;<CODE>d</CODE>&nbsp;|&nbsp;<CODE>e</CODE>&nbsp;|&nbsp;<CODE>f</CODE>&nbsp;|&nbsp;<CODE>g</CODE>&nbsp;|&nbsp;<CODE>h</CODE>&nbsp;|&nbsp;<CODE>i</CODE>&nbsp;|&nbsp;<CODE>j</CODE>&nbsp;|&nbsp;<CODE>k</CODE>&nbsp;|&nbsp;<CODE>l</CODE>&nbsp;|&nbsp;<CODE>m</CODE>&nbsp;|&nbsp;<CODE>n</CODE>&nbsp;|&nbsp;<CODE>o</CODE>&nbsp;|&nbsp;<CODE>p</CODE>&nbsp;|&nbsp;<CODE>q</CODE>&nbsp;|&nbsp;<CODE>r</CODE>&nbsp;|&nbsp;<CODE>s</CODE>&nbsp;|&nbsp;<CODE>t</CODE>&nbsp;|&nbsp;<CODE>u</CODE>&nbsp;|&nbsp;<CODE>v</CODE>&nbsp;|&nbsp;<CODE>w</CODE>&nbsp;|&nbsp;<CODE>x</CODE>&nbsp;|&nbsp;<CODE>y</CODE>&nbsp;|&nbsp;<CODE>z</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>$</CODE>&nbsp;|&nbsp;<CODE>_</CODE></DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">DecimalDigit</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;|&nbsp;<CODE>1</CODE>&nbsp;|&nbsp;<CODE>2</CODE>&nbsp;|&nbsp;<CODE>3</CODE>&nbsp;|&nbsp;<CODE>4</CODE>&nbsp;|&nbsp;<CODE>5</CODE>&nbsp;|&nbsp;<CODE>6</CODE>&nbsp;|&nbsp;<CODE>7</CODE>&nbsp;|&nbsp;<CODE>8</CODE>&nbsp;|&nbsp;<CODE>9</CODE></DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">Name</SPAN>[<VAR class="nonterminal">IdentifierName</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">String</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Name</SPAN>[<VAR
class="nonterminal">IdentifierName</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">IdentifierLetter</VAR>]&nbsp;=&nbsp;<B>[</B><SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">IdentifierLetter</VAR>]<B>]</B></P>
<P class="semantics-next"><SPAN class="action-name">Name</SPAN>[<VAR
class="nonterminal">IdentifierName</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">IdentifierName<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">IdentifierLetter</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">Name</SPAN>[<VAR
class="nonterminal">IdentifierName<SUB>1</SUB></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">IdentifierLetter</VAR>]<B>]</B></P>
<P class="semantics-next"><SPAN class="action-name">Name</SPAN>[<VAR
class="nonterminal">IdentifierName</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">IdentifierName<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">Name</SPAN>[<VAR
class="nonterminal">IdentifierName<SUB>1</SUB></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">DecimalDigit</VAR>]<B>]</B></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">IdentifierLetter</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN>&nbsp;=&nbsp;<VAR class="nonterminal">IdentifierLetter</VAR></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">DecimalDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN>&nbsp;=&nbsp;<VAR class="nonterminal">DecimalDigit</VAR></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">DecimalDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">DecimalDigit</VAR>)</P>
<P class="semantics"><SPAN class="global-variable">keywords</SPAN>&nbsp;:&nbsp;<SPAN
class="type-expression"><SPAN class="type-name">String</SPAN>[]</SPAN><BR>
&nbsp;&nbsp;=&nbsp;<B>[</B>&#8220;<CODE>break</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>case</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>catch</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>continue</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>default</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>delete</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>do</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>else</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>finally</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>for</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>function</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>if</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>in</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>new</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>return</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>switch</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>this</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>throw</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>try</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>typeof</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>var</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>void</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>while</CODE>&#8221;,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;<CODE>with</CODE>&#8221;<B>]</B></P>
<P class="semantics"><SPAN class="global-variable">futureReservedWords</SPAN>&nbsp;:&nbsp;<SPAN
class="type-expression"><SPAN class="type-name">String</SPAN>[]</SPAN><BR>
&nbsp;&nbsp;=&nbsp;<B>[</B>&#8220;<CODE>class</CODE>&#8221;,&nbsp;&#8220;<CODE>const</CODE>&#8221;,&nbsp;&#8220;<CODE>debugger</CODE>&#8221;,&nbsp;&#8220;<CODE>enum</CODE>&#8221;,&nbsp;&#8220;<CODE>export</CODE>&#8221;,&nbsp;&#8220;<CODE>extends</CODE>&#8221;,&nbsp;&#8220;<CODE>import</CODE>&#8221;,&nbsp;&#8220;<CODE>super</CODE>&#8221;<B>]</B></P>
<P class="semantics"><SPAN class="global-variable">literals</SPAN>&nbsp;:&nbsp;<SPAN
class="type-expression"><SPAN
class="type-name">String</SPAN>[]</SPAN>&nbsp;=&nbsp;<B>[</B>&#8220;<CODE>null</CODE>&#8221;,&nbsp;&#8220;<CODE>true</CODE>&#8221;,&nbsp;&#8220;<CODE>false</CODE>&#8221;<B>]</B></P>
<P class="semantics"><SPAN class="global-variable">reservedWords</SPAN>&nbsp;:&nbsp;<SPAN
class="type-expression"><SPAN class="type-name">String</SPAN>[]</SPAN>&nbsp;=&nbsp;<SPAN
class="global-variable">keywords</SPAN>&nbsp;<SPAN class="symbol">¨</SPAN>&nbsp;<SPAN
class="global-variable">futureReservedWords</SPAN>&nbsp;<SPAN class="symbol">¨</SPAN>&nbsp;<SPAN
class="global-variable">literals</SPAN></P>
<P class="semantics"><SPAN class="global-variable">member</SPAN>(<SPAN
class="local-variable">id</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>,&nbsp;<SPAN
class="local-variable">list</SPAN>:&nbsp;<SPAN class="type-expression"><SPAN
class="type-name">String</SPAN>[]</SPAN>)&nbsp;:&nbsp;<SPAN class="type-name">Boolean</SPAN><BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="semantic-keyword">if</SPAN>&nbsp;<SPAN
class="global-variable">empty</SPAN>(<SPAN class="local-variable">list</SPAN>)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">then</SPAN>&nbsp;<SPAN
class="global-variable">false</SPAN><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">else</SPAN>&nbsp;<SPAN
class="semantic-keyword">let</SPAN>&nbsp;<SPAN class="local-variable">s</SPAN>:&nbsp;<SPAN
class="type-name">String</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">first</SPAN>(<SPAN
class="local-variable">list</SPAN>)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="semantic-keyword">in</SPAN>&nbsp;<SPAN class="semantic-keyword">if</SPAN>&nbsp;<SPAN
class="global-variable">stringEqual</SPAN>(<SPAN class="local-variable">id</SPAN>,&nbsp;<SPAN
class="local-variable">s</SPAN>)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="semantic-keyword">then</SPAN>&nbsp;<SPAN class="global-variable">true</SPAN><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="semantic-keyword">else</SPAN>&nbsp;<SPAN class="global-variable">member</SPAN>(<SPAN
class="local-variable">id</SPAN>,&nbsp;<SPAN class="global-variable">rest</SPAN>(<SPAN
class="local-variable">list</SPAN>))</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">IdentifierOrReservedWord</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR class="nonterminal">IdentifierName</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">Token</SPAN>[<VAR
class="nonterminal">IdentifierOrReservedWord</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Token</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Token</SPAN>[<VAR
class="nonterminal">IdentifierOrReservedWord</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">IdentifierName</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="semantic-keyword">let</SPAN>&nbsp;<SPAN
class="local-variable">id</SPAN>:&nbsp;<SPAN class="type-name">String</SPAN>&nbsp;=&nbsp;<SPAN
class="action-name">Name</SPAN>[<VAR class="nonterminal">IdentifierName</VAR>]<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">in</SPAN>&nbsp;<SPAN
class="semantic-keyword">if</SPAN>&nbsp;<SPAN class="global-variable">member</SPAN>(<SPAN
class="local-variable">id</SPAN>,&nbsp;<SPAN class="global-variable">reservedWords</SPAN>)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="semantic-keyword">then</SPAN>&nbsp;<SPAN class="field-name">reservedWord</SPAN>&nbsp;<SPAN
class="local-variable">id</SPAN><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN
class="semantic-keyword">else</SPAN>&nbsp;<SPAN class="field-name">identifier</SPAN>&nbsp;<SPAN
class="local-variable">id</SPAN></P>
<H2>Punctuators</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&lt;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>!</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>!</CODE>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>,</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>!</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>~</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>?</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>:</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>.</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&amp;</CODE>&nbsp;<CODE>&amp;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>|</CODE>&nbsp;<CODE>|</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>+</CODE>&nbsp;<CODE>+</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>-</CODE>&nbsp;<CODE>-</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>+</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>-</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>*</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>/</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&amp;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>|</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>^</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>%</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>&lt;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE></DIV>
<DIV
class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>+</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>-</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>*</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>/</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>&amp;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>|</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>^</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>%</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV
class="grammar-rhs">|&nbsp;&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV
class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV
class="grammar-rhs">|&nbsp;&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>(</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>)</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>{</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>}</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>[</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>]</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>;</CODE></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">Punctuator</SPAN>[<VAR class="nonterminal">Punctuator</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">String</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&lt;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&lt;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>==</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>===</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&lt;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>!</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>!=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>!</CODE>&nbsp;<CODE>=</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>!==</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>,</CODE>]&nbsp;=&nbsp;&#8220;<CODE>,</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>!</CODE>]&nbsp;=&nbsp;&#8220;<CODE>!</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>~</CODE>]&nbsp;=&nbsp;&#8220;<CODE>~</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>?</CODE>]&nbsp;=&nbsp;&#8220;<CODE>?</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>:</CODE>]&nbsp;=&nbsp;&#8220;<CODE>:</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>.</CODE>]&nbsp;=&nbsp;&#8220;<CODE>.</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&amp;</CODE>&nbsp;<CODE>&amp;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&amp;&amp;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>|</CODE>&nbsp;<CODE>|</CODE>]&nbsp;=&nbsp;&#8220;<CODE>||</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>+</CODE>&nbsp;<CODE>+</CODE>]&nbsp;=&nbsp;&#8220;<CODE>++</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>-</CODE>&nbsp;<CODE>-</CODE>]&nbsp;=&nbsp;&#8220;<CODE>--</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>+</CODE>]&nbsp;=&nbsp;&#8220;<CODE>+</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>-</CODE>]&nbsp;=&nbsp;&#8220;<CODE>-</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>*</CODE>]&nbsp;=&nbsp;&#8220;<CODE>*</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>/</CODE>]&nbsp;=&nbsp;&#8220;<CODE>/</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&amp;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&amp;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>|</CODE>]&nbsp;=&nbsp;&#8220;<CODE>|</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>^</CODE>]&nbsp;=&nbsp;&#8220;<CODE>^</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>%</CODE>]&nbsp;=&nbsp;&#8220;<CODE>%</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>&lt;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&lt;&lt;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;&gt;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;&gt;&gt;</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>+</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>+=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>-</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>-=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>*</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>*=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>/</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>/=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&amp;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&amp;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>|</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>|=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>^</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>^=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>%</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>%=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>&lt;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&lt;&lt;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;&gt;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>&gt;</CODE>&nbsp;<CODE>=</CODE>]&nbsp;=&nbsp;&#8220;<CODE>&gt;&gt;&gt;=</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>(</CODE>]&nbsp;=&nbsp;&#8220;<CODE>(</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>)</CODE>]&nbsp;=&nbsp;&#8220;<CODE>)</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>{</CODE>]&nbsp;=&nbsp;&#8220;<CODE>{</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>}</CODE>]&nbsp;=&nbsp;&#8220;<CODE>}</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>[</CODE>]&nbsp;=&nbsp;&#8220;<CODE>[</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>]</CODE>]&nbsp;=&nbsp;&#8220;<CODE>]</CODE>&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">Punctuator</SPAN>[<VAR
class="nonterminal">Punctuator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>;</CODE>]&nbsp;=&nbsp;&#8220;<CODE>;</CODE>&#8221;</P>
<H2>Numeric literals</H2>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NumericLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">DecimalLiteral</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">HexIntegerLiteral</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">OctalIntegerLiteral</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DoubleValue</SPAN>[<VAR
class="nonterminal">NumericLiteral</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Double</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">DoubleValue</SPAN>[<VAR
class="nonterminal">NumericLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalLiteral</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">rationalToDouble</SPAN>(<SPAN
class="action-name">RationalValue</SPAN>[<VAR class="nonterminal">DecimalLiteral</VAR>])</P>
<P class="semantics-next"><SPAN class="action-name">DoubleValue</SPAN>[<VAR
class="nonterminal">NumericLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">HexIntegerLiteral</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">rationalToDouble</SPAN>(<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">HexIntegerLiteral</VAR>])</P>
<P class="semantics-next"><SPAN class="action-name">DoubleValue</SPAN>[<VAR
class="nonterminal">NumericLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">OctalIntegerLiteral</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">rationalToDouble</SPAN>(<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">OctalIntegerLiteral</VAR>])</P>
<P class="semantics"><SPAN class="global-variable">expt</SPAN>(<SPAN
class="local-variable">base</SPAN>:&nbsp;<SPAN class="type-name">Rational</SPAN>,&nbsp;<SPAN
class="local-variable">exponent</SPAN>:&nbsp;<SPAN
class="type-name">Integer</SPAN>)&nbsp;:&nbsp;<SPAN class="type-name">Rational</SPAN><BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="semantic-keyword">if</SPAN>&nbsp;<SPAN
class="local-variable">exponent</SPAN>&nbsp;=&nbsp;0<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">then</SPAN>&nbsp;1<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">else</SPAN>&nbsp;<SPAN
class="semantic-keyword">if</SPAN>&nbsp;<SPAN
class="local-variable">exponent</SPAN>&nbsp;&lt;&nbsp;0<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">then</SPAN>&nbsp;1/<SPAN
class="global-variable">expt</SPAN>(<SPAN class="local-variable">base</SPAN>,&nbsp;-<SPAN
class="local-variable">exponent</SPAN>)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="semantic-keyword">else</SPAN>&nbsp;<SPAN
class="local-variable">base</SPAN>*<SPAN class="global-variable">expt</SPAN>(<SPAN
class="local-variable">base</SPAN>,&nbsp;<SPAN
class="local-variable">exponent</SPAN>&nbsp;-&nbsp;1)</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">DecimalLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR class="nonterminal">Mantissa</VAR>&nbsp;<VAR
class="nonterminal">Exponent</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Mantissa</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<CODE>.</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<CODE>.</CODE>&nbsp;<VAR
class="nonterminal">Fraction</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>.</CODE>&nbsp;<VAR
class="nonterminal">Fraction</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>0</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">NonZeroDecimalDigits</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">NonZeroDecimalDigits</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">NonZeroDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">NonZeroDigit</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>1</CODE>&nbsp;|&nbsp;<CODE>2</CODE>&nbsp;|&nbsp;<CODE>3</CODE>&nbsp;|&nbsp;<CODE>4</CODE>&nbsp;|&nbsp;<CODE>5</CODE>&nbsp;|&nbsp;<CODE>6</CODE>&nbsp;|&nbsp;<CODE>7</CODE>&nbsp;|&nbsp;<CODE>8</CODE>&nbsp;|&nbsp;<CODE>9</CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Fraction</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR class="nonterminal">DecimalDigits</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">DecimalLiteral</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Rational</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">DecimalLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">Mantissa</VAR>&nbsp;<VAR class="nonterminal">Exponent</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Mantissa</VAR>]*<SPAN class="global-variable">expt</SPAN>(10,&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">Exponent</VAR>])</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">RationalValue</SPAN>[<VAR class="nonterminal">Mantissa</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Rational</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Mantissa</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">DecimalIntegerLiteral</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Mantissa</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<CODE>.</CODE>]&nbsp;=&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">DecimalIntegerLiteral</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Mantissa</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<CODE>.</CODE>&nbsp;<VAR
class="nonterminal">Fraction</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">RationalValue</SPAN>[<VAR class="nonterminal">Fraction</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Mantissa</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<CODE>.</CODE>&nbsp;<VAR
class="nonterminal">Fraction</VAR>]&nbsp;=&nbsp;<SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Fraction</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>]&nbsp;=&nbsp;0</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalIntegerLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonZeroDigit</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">DecimalValue</SPAN>[<VAR class="nonterminal">NonZeroDigit</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">NonZeroDecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonZeroDecimalDigits<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;10*<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">NonZeroDecimalDigits<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">DecimalValue</SPAN>[<VAR class="nonterminal">DecimalDigit</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">NonZeroDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">NonZeroDigit</VAR>)</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">RationalValue</SPAN>[<VAR class="nonterminal">Fraction</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Rational</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">RationalValue</SPAN>[<VAR
class="nonterminal">Fraction</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>]/<SPAN class="global-variable">expt</SPAN>(10,&nbsp;<SPAN
class="action-name">NDigits</SPAN>[<VAR class="nonterminal">DecimalDigits</VAR>])</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">Exponent</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ExponentIndicator</VAR>&nbsp;<VAR
class="nonterminal">SignedInteger</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">ExponentIndicator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>E</CODE>&nbsp;|&nbsp;<CODE>e</CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">SignedInteger</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">DecimalDigits</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>+</CODE>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>-</CODE>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">Exponent</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">Exponent</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;&#171;empty&#187;]&nbsp;=&nbsp;0</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">Exponent</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">ExponentIndicator</VAR>&nbsp;<VAR
class="nonterminal">SignedInteger</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">SignedInteger</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">SignedInteger</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">SignedInteger</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">DecimalDigits</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">SignedInteger</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>+</CODE>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">DecimalDigits</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">SignedInteger</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>-</CODE>&nbsp;<VAR
class="nonterminal">DecimalDigits</VAR>]&nbsp;=&nbsp;-<SPAN
class="action-name">IntegerValue</SPAN>[<VAR class="nonterminal">DecimalDigits</VAR>]</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">DecimalDigits</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">DecimalDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">DecimalDigits</VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Integer</SPAN></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">NDigits</SPAN>[<VAR class="nonterminal">DecimalDigits</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">DecimalValue</SPAN>[<VAR class="nonterminal">DecimalDigit</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">NDigits</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]&nbsp;=&nbsp;1</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigits<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;10*<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">DecimalDigits<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">DecimalValue</SPAN>[<VAR class="nonterminal">DecimalDigit</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">NDigits</SPAN>[<VAR
class="nonterminal">DecimalDigits</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">DecimalDigits<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">DecimalDigit</VAR>]&nbsp;=&nbsp;<SPAN class="action-name">NDigits</SPAN>[<VAR
class="nonterminal">DecimalDigits<SUB>1</SUB></VAR>]&nbsp;+&nbsp;1</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">HexIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>0</CODE>&nbsp;<VAR
class="nonterminal">HexIndicator</VAR>&nbsp;<VAR class="nonterminal">HexDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">HexIntegerLiteral</VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">HexIndicator</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>X</CODE>&nbsp;|&nbsp;<CODE>x</CODE></DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">HexDigit</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;|&nbsp;<CODE>1</CODE>&nbsp;|&nbsp;<CODE>2</CODE>&nbsp;|&nbsp;<CODE>3</CODE>&nbsp;|&nbsp;<CODE>4</CODE>&nbsp;|&nbsp;<CODE>5</CODE>&nbsp;|&nbsp;<CODE>6</CODE>&nbsp;|&nbsp;<CODE>7</CODE>&nbsp;|&nbsp;<CODE>8</CODE>&nbsp;|&nbsp;<CODE>9</CODE>&nbsp;|&nbsp;<CODE>A</CODE>&nbsp;|&nbsp;<CODE>B</CODE>&nbsp;|&nbsp;<CODE>C</CODE>&nbsp;|&nbsp;<CODE>D</CODE>&nbsp;|&nbsp;<CODE>E</CODE>&nbsp;|&nbsp;<CODE>F</CODE>&nbsp;|&nbsp;<CODE>a</CODE>&nbsp;|&nbsp;<CODE>b</CODE>&nbsp;|&nbsp;<CODE>c</CODE>&nbsp;|&nbsp;<CODE>d</CODE>&nbsp;|&nbsp;<CODE>e</CODE>&nbsp;|&nbsp;<CODE>f</CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">OctalIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>0</CODE>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">OctalIntegerLiteral</VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">OctalDigit</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;|&nbsp;<CODE>1</CODE>&nbsp;|&nbsp;<CODE>2</CODE>&nbsp;|&nbsp;<CODE>3</CODE>&nbsp;|&nbsp;<CODE>4</CODE>&nbsp;|&nbsp;<CODE>5</CODE>&nbsp;|&nbsp;<CODE>6</CODE>&nbsp;|&nbsp;<CODE>7</CODE></DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">HexIntegerLiteral</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">HexIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;<VAR
class="nonterminal">HexIndicator</VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR>]&nbsp;=&nbsp;<SPAN class="action-name">HexValue</SPAN>[<VAR
class="nonterminal">HexDigit</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">HexIntegerLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">HexIntegerLiteral<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;16*<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">HexIntegerLiteral<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">HexValue</SPAN>[<VAR class="nonterminal">HexDigit</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">HexDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">HexDigit</VAR>)</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">OctalIntegerLiteral</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">OctalIntegerLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>]&nbsp;=&nbsp;<SPAN class="action-name">OctalValue</SPAN>[<VAR
class="nonterminal">OctalDigit</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">OctalIntegerLiteral</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">OctalIntegerLiteral<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;8*<SPAN class="action-name">IntegerValue</SPAN>[<VAR
class="nonterminal">OctalIntegerLiteral<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">OctalDigit</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OctalDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN>&nbsp;=&nbsp;<VAR class="nonterminal">OctalDigit</VAR></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">OctalDigit</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">OctalDigit</VAR>)</P>
<H2>String literals</H2>
<H4>Syntax</H4>
<DIV class="grammar-argument"><VAR class="nonterminal"><SPAN
class="nonterminal-argument">Quote</SPAN></VAR>&nbsp;<SPAN class="symbol">Î</SPAN>&nbsp;{<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">single</SPAN></VAR>,&nbsp;<VAR
class="nonterminal"><SPAN class="nonterminal-attribute">double</SPAN></VAR>}</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">StringLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>'</CODE>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">single</SPAN></SUP></VAR>&nbsp;<CODE>'</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>"</CODE>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">double</SPAN></SUP></VAR>&nbsp;<CODE>"</CODE></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringLiteral</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">String</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>'</CODE>&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">single</SPAN></SUP></VAR>&nbsp;<CODE>'</CODE>]&nbsp;=&nbsp;<SPAN
class="action-name">StringValue</SPAN>[<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">single</SPAN></SUP></VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringLiteral</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>"</CODE>&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">double</SPAN></SUP></VAR>&nbsp;<CODE>"</CODE>]&nbsp;=&nbsp;<SPAN
class="action-name">StringValue</SPAN>[<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-attribute">double</SPAN></SUP></VAR>]</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<CODE>\</CODE>&nbsp;<VAR
class="nonterminal">ShortOctalEscape</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;&#171;empty&#187;</DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">PlainStringChar</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<CODE>\</CODE>&nbsp;<VAR
class="nonterminal">OrdinaryEscape</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">PlainStringChar</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">AnyCharacter</VAR>&nbsp;<B>except</B>&nbsp;<CODE>'</CODE>&nbsp;|&nbsp;<CODE>"</CODE>&nbsp;|&nbsp;<CODE>\</CODE>&nbsp;|&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>&nbsp;|&nbsp;<VAR class="nonterminal">LineTerminator</VAR></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-attribute">single</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>"</CODE></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-attribute">double</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>'</CODE></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">StringValue</SPAN>[<VAR class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">String</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP><SUB>1</SUB></VAR>&nbsp;<CODE>\</CODE>&nbsp;<VAR
class="nonterminal">ShortOctalEscape</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP><SUB>1</SUB></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">ShortOctalEscape</VAR>]<B>]</B></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">StringValue</SPAN>[<VAR class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">String</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;&#171;empty&#187;]&nbsp;=&nbsp;&#8220;&#8221;</P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">PlainStringChar</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">PlainStringChar</VAR>]<B>]</B></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<VAR
class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]<B>]</B></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP><SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP><SUB>1</SUB></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OctalDigit</VAR>]<B>]</B></P>
<P class="semantics-next"><SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">OrdinaryStringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>&nbsp;<CODE>\</CODE>&nbsp;<VAR
class="nonterminal">OrdinaryEscape</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="action-name">StringValue</SPAN>[<VAR
class="nonterminal">StringChars<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;<SPAN
class="symbol">¨</SPAN>&nbsp;<B>[</B><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>]<B>]</B></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">PlainStringChar</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN>&nbsp;=&nbsp;<VAR class="nonterminal">PlainStringChar</VAR></P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-argument">Quote</SPAN></SUP></VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-attribute">single</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>"</CODE>]&nbsp;=&nbsp;&#8216;<CODE>"</CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">PlainStringQuote<SUP><SPAN
class="nonterminal-attribute">double</SPAN></SUP></VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>'</CODE>]&nbsp;=&nbsp;&#8216;<CODE>'</CODE>&#8217;</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">StringCharEscape</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">FullOctalEscape</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">HexEscape</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">UnicodeEscape</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">StringNonEscape</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">StringNonEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">NonTerminator</VAR>&nbsp;<B>except</B>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>&nbsp;|&nbsp;<CODE>x</CODE>&nbsp;|&nbsp;<CODE>u</CODE>&nbsp;|&nbsp;<CODE>'</CODE>&nbsp;|&nbsp;<CODE>"</CODE>&nbsp;|&nbsp;<CODE>\</CODE>&nbsp;|&nbsp;<CODE>b</CODE>&nbsp;|&nbsp;<CODE>f</CODE>&nbsp;|&nbsp;<CODE>n</CODE>&nbsp;|&nbsp;<CODE>r</CODE>&nbsp;|&nbsp;<CODE>t</CODE>&nbsp;|&nbsp;<CODE>v</CODE></DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringCharEscape</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">StringCharEscape</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">FullOctalEscape</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">FullOctalEscape</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">HexEscape</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">HexEscape</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">UnicodeEscape</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">UnicodeEscape</VAR>]</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">OrdinaryEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">StringNonEscape</VAR>]&nbsp;=&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR class="nonterminal">StringNonEscape</VAR>]</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringNonEscape</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Character</SPAN>&nbsp;=&nbsp;<VAR class="nonterminal">StringNonEscape</VAR></P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<CODE>'</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>"</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>\</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>b</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>f</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>n</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>r</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>t</CODE></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<CODE>v</CODE></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>'</CODE>]&nbsp;=&nbsp;&#8216;<CODE>'</CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>"</CODE>]&nbsp;=&nbsp;&#8216;<CODE>"</CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>\</CODE>]&nbsp;=&nbsp;&#8216;<CODE>\</CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>b</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;BS&#187;</SPAN></CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>f</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;FF&#187;</SPAN></CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>n</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;LF&#187;</SPAN></CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>r</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;CR&#187;</SPAN></CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>t</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;TAB&#187;</SPAN></CODE>&#8217;</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">StringCharEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>v</CODE>]&nbsp;=&nbsp;&#8216;<CODE><SPAN
class="control">&#171;VT&#187;</SPAN></CODE>&#8217;</P>
<H4>Syntax</H4>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">ShortOctalEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">OctalDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ZeroToThree</VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">FullOctalEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN></DIV>
<DIV class="grammar-rhs">&nbsp;&nbsp;&nbsp;<VAR class="nonterminal">FourToSeven</VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR></DIV>
<DIV class="grammar-rhs">|&nbsp;&nbsp;<VAR class="nonterminal">ZeroToThree</VAR>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>&nbsp;<VAR class="nonterminal">OctalDigit</VAR></DIV>
</DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">ZeroToThree</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>0</CODE>&nbsp;|&nbsp;<CODE>1</CODE>&nbsp;|&nbsp;<CODE>2</CODE>&nbsp;|&nbsp;<CODE>3</CODE></DIV>
<DIV class="grammar-lhs"><VAR class="nonterminal">FourToSeven</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>4</CODE>&nbsp;|&nbsp;<CODE>5</CODE>&nbsp;|&nbsp;<CODE>6</CODE>&nbsp;|&nbsp;<CODE>7</CODE></DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">HexEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>x</CODE>&nbsp;<VAR class="nonterminal">HexDigit</VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR></DIV>
</DIV>
<DIV class="grammar-rule">
<DIV class="grammar-lhs"><VAR class="nonterminal">UnicodeEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>u</CODE>&nbsp;<VAR class="nonterminal">HexDigit</VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR>&nbsp;<VAR class="nonterminal">HexDigit</VAR>&nbsp;<VAR
class="nonterminal">HexDigit</VAR></DIV>
</DIV>
<H4>Semantics</H4>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">ShortOctalEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">ShortOctalEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">OctalDigit</VAR>]&nbsp;=&nbsp;<SPAN
class="global-variable">codeToCharacter</SPAN>(<SPAN class="action-name">OctalValue</SPAN>[<VAR
class="nonterminal">OctalDigit</VAR>])</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">ShortOctalEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">ZeroToThree</VAR>&nbsp;<VAR class="nonterminal">OctalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">codeToCharacter</SPAN>(8*<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">ZeroToThree</VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">OctalDigit</VAR>])</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">FullOctalEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">FullOctalEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">FourToSeven</VAR>&nbsp;<VAR class="nonterminal">OctalDigit</VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">codeToCharacter</SPAN>(8*<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">FourToSeven</VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">OctalDigit</VAR>])</P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">FullOctalEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<VAR
class="nonterminal">ZeroToThree</VAR>&nbsp;<VAR
class="nonterminal">OctalDigit<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">OctalDigit<SUB>2</SUB></VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">codeToCharacter</SPAN>(<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64*<SPAN
class="action-name">OctalValue</SPAN>[<VAR
class="nonterminal">ZeroToThree</VAR>]&nbsp;+&nbsp;8*<SPAN
class="action-name">OctalValue</SPAN>[<VAR
class="nonterminal">OctalDigit<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">OctalValue</SPAN>[<VAR class="nonterminal">OctalDigit<SUB>2</SUB></VAR>])</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">ZeroToThree</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">ZeroToThree</VAR>)</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">DigitValue</SPAN>[<VAR class="nonterminal">FourToSeven</VAR>]&nbsp;:&nbsp;<SPAN
class="type-name">Integer</SPAN>&nbsp;=&nbsp;<SPAN class="global-variable">digitValue</SPAN>(<VAR
class="nonterminal">FourToSeven</VAR>)</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">HexEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">HexEscape</VAR>&nbsp;<SPAN class="symbol">Þ</SPAN>&nbsp;<CODE>x</CODE>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>2</SUB></VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">codeToCharacter</SPAN>(16*<SPAN
class="action-name">HexValue</SPAN>[<VAR
class="nonterminal">HexDigit<SUB>1</SUB></VAR>]&nbsp;+&nbsp;<SPAN
class="action-name">HexValue</SPAN>[<VAR class="nonterminal">HexDigit<SUB>2</SUB></VAR>])</P>
<P class="semantics"><SPAN class="semantic-keyword">action</SPAN>&nbsp;<SPAN
class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">UnicodeEscape</VAR>]&nbsp;:&nbsp;<SPAN class="type-name">Character</SPAN></P>
<P class="semantics-next"><SPAN class="action-name">CharacterValue</SPAN>[<VAR
class="nonterminal">UnicodeEscape</VAR>&nbsp;<SPAN
class="symbol">Þ</SPAN>&nbsp;<CODE>u</CODE>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>1</SUB></VAR>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>2</SUB></VAR>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>3</SUB></VAR>&nbsp;<VAR
class="nonterminal">HexDigit<SUB>4</SUB></VAR>]<BR>
&nbsp;&nbsp;=&nbsp;<SPAN class="global-variable">codeToCharacter</SPAN>(<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4096*<SPAN
class="action-name">HexValue</SPAN>[<VAR
class="nonterminal">HexDigit<SUB>1</SUB></VAR>]&nbsp;+&nbsp;256*<SPAN
class="action-name">HexValue</SPAN>[<VAR
class="nonterminal">HexDigit<SUB>2</SUB></VAR>]&nbsp;+&nbsp;16*<SPAN
class="action-name">HexValue</SPAN>[<VAR class="nonterminal">HexDigit<SUB>3</SUB></VAR>]&nbsp;+<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="action-name">HexValue</SPAN>[<VAR
class="nonterminal">HexDigit<SUB>4</SUB></VAR>])</P>
</BODY>
</HTML>