<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Here is an example of .fo code that is generating missing text.&nbsp;
    Sorry for the length of it, but it is needed to show all the code
    that is missing in the PDF.&nbsp; In the following paragraphs, the text
    beginning "Upon an assignment statement..." through "...you can pass
    that infor" appears on page 1 of a chapter.&nbsp; The entirety of the
    fo:float appears on the top of page 2, followed by no other content
    on the page.&nbsp; Page 3 begins with the text:<br>
    <br>
    <blockquote>&gt;&gt;<br>
      All the expression-related rules in the parser grammar<br>
    </blockquote>
    <br>
    Here is the FO:<br>
    <br>
    &lt;fo:block id="N100DD" space-after="6pt"&gt;<br>
    &nbsp; Upon an assignment statement, though, the recognizer must track<br>
    &nbsp; implicit local variable definitions by using the<br>
    &nbsp; &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;locals&lt;/fo:inline&gt;&nbsp;&lt;fo:inline
    font-family="Droid Sans"
    font-size="90%"&gt;HashMap&lt;/fo:inline&gt;.&nbsp; Each<br>
    &nbsp; variable in a list of input expressions receives a unique local<br>
    &nbsp; variable number.<br>
    &lt;/fo:block&gt;<br>
    <br>
    &nbsp;<br>
    &lt;fo:float float="before"&gt;<br>
    &lt;fo:block border-color="rgb(150, 150, 180)" border="2pt solid"
    background-color="rgb(220, 220, 250)"&gt;<br>
    &lt;fo:block background-color="rgb(150, 150, 180)"
    padding-bottom="3pt" padding-top="3pt" font-size="90%"
    font-weight="bold" space-after="0pt" space-before="0pt"&gt;<br>
    &lt;fo:block margin-left="5pt" margin-right="5pt"&gt;Do You Ever
    Need to Return a List of Templates?&lt;/fo:block&gt;<br>
    &lt;/fo:block&gt;<br>
    &lt;fo:block-container margin-right="5pt" margin-left="5pt"
    padding-top="3pt" font-size="85%"&gt;<br>
    &lt;fo:block/&gt;<br>
    <br>
    <br>
    &lt;fo:block id="N100EC" space-after="6pt"&gt;<br>
    &nbsp; Some of you will see rules such as this:<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:list-block provisional-distance-between-starts="0in"
    space-after.maximum="10pt" space-after.optimum="8pt"
    space-after.minimum="6pt" space-before.maximum="10pt"
    space-before.optimum="6pt" space-before.minimum="6pt"
    font-size="80%" font-family="Droid Sans Mono"&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;prog : stat+
    ;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;/fo:list-block&gt;<br>
    <br>
    <br>
    <br>
    &lt;fo:block id="N10104" space-after="6pt"&gt;<br>
    &nbsp; and question why &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;prog&lt;/fo:inline&gt; should not return a list
    of<br>
    &nbsp; templates. Remember that for translators in the generator
    category,<br>
    &nbsp; you must literally specify what to emit for every input construct<br>
    &nbsp; even if it is just a list of input elements.&nbsp; The proper generated<br>
    &nbsp; output for &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;prog&lt;/fo:inline&gt; is in fact a template that<br>
    &nbsp; represents a list of statements. For example, you might use<br>
    &nbsp; something akin to this:<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:list-block provisional-distance-between-starts="0in"
    space-after.maximum="10pt" space-after.optimum="8pt"
    space-after.minimum="6pt" space-before.maximum="10pt"
    space-before.optimum="6pt" space-before.minimum="6pt"
    font-size="80%" font-family="Droid Sans Mono"&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;prog :
    (s+=stat)+ -&amp;gt; template(stats={$s}) &lt;fo:inline
    font-style="italic" color="rgb(25, 17,
    144)"&gt;"&amp;lt;stats&amp;gt;"&lt;/fo:inline&gt;&#8203;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;/fo:list-block&gt;<br>
    <br>
    <br>
    &lt;/fo:block-container&gt;<br>
    &lt;/fo:block&gt;<br>
    &lt;/fo:float&gt;<br>
    <br>
    &lt;fo:block id="N10125" space-after="6pt"&gt;<br>
    &nbsp; The expression rules are as before except for the addition of code
    to<br>
    &nbsp; track the number of operations (to estimate stack size):<br>
    &lt;/fo:block&gt;<br>
    <br>
    <br>
    <br>
    &lt;fo:block id="N1012B" space-after="6pt"&gt;<br>
    &nbsp; Once you have a parser grammar that builds the appropriate trees
    and<br>
    &nbsp; computes the number of operations and &lt;fo:inline
    font-family="Droid Sans" font-size="90%"&gt;locals&lt;/fo:inline&gt;<br>
    &nbsp; map, you can pass that information to the tree grammar.&nbsp; The tree<br>
    &nbsp; grammar will create a template for each subtree in order to emit<br>
    &nbsp; bytecodes.&nbsp; Start rule &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;prog&lt;/fo:inline&gt;&#8217;s template return<br>
    &nbsp; value represents the template for the entire assembly file.&nbsp; The<br>
    &nbsp; grammar itself is identical to the &lt;fo:inline
    font-family="Droid Sans" font-size="90%"&gt;Eval&lt;/fo:inline&gt;
    tree<br>
    &nbsp; grammar from, but of course the actions<br>
    &nbsp; are different.<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:block id="N10138" space-after="6pt"&gt;<br>
    &nbsp; Here is the start of the &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;Gen&lt;/fo:inline&gt; tree grammar:<br>
    &lt;/fo:block&gt;<br>
    <br>
    <br>
    <br>
    &lt;fo:block id="N10141" space-after="6pt"&gt;<br>
    &nbsp; The test rig pulls necessary data out of the parser after parsing
    is<br>
    &nbsp; complete and passes it to the tree grammar via<br>
    &nbsp; &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;prog&lt;/fo:inline&gt; rule parameters:<br>
    &lt;/fo:block&gt;<br>
    <br>
    <br>
    <br>
    &lt;fo:block id="N1014A" space-after="6pt"&gt;<br>
    <br>
    &lt;/fo:block&gt;<br>
    &lt;fo:block id="N1014E" space-after="6pt"&gt;<br>
    &nbsp; The &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;stat&lt;/fo:inline&gt; rule creates an instance
    of template<br>
    &nbsp; &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;exprStat&lt;/fo:inline&gt; or &lt;fo:inline
    font-family="Droid Sans"
    font-size="90%"&gt;assign&lt;/fo:inline&gt;, depending<br>
    &nbsp; on which alternative matches:<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:block color="rgb(120, 155, 125)" background="rgb(200, 235,
    220)" font-weight="bold" font-size="80%" font-family="Myriad"
    padding-left="0.3em" space-before.maximum="10pt"
    space-before.optimum="6pt" space-before.minimum="6pt"
    keep-with-next="always"&gt;<br>
    &lt;fo:basic-link xmlns:exsl=<a class="moz-txt-link-rfc2396E" href="http://exslt.org/common">"http://exslt.org/common"</a>
    external-destination="url(<a class="moz-txt-link-freetext" href="http://media.pragprog.com/titles/tpantlr2/code/templates/generator/2pass/Gen.g">http://media.pragprog.com/titles/tpantlr2/code/templates/generator/2pass/Gen.g</a>)"&gt;Download
    templates/generator/2pass/Gen.g&lt;/fo:basic-link&gt;<br>
    &lt;/fo:block&gt;<br>
    &lt;fo:list-block provisional-distance-between-starts="0in"
    space-after.maximum="10pt" space-after.optimum="8pt"
    space-after.minimum="6pt" space-before="0pt" font-size="80%"
    font-family="Droid Sans Mono"&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;stat:&nbsp;&nbsp; expr
    -&amp;gt; exprStat(v={$expr.st},
    descr={$expr.text})&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;
    ^(&lt;fo:inline font-style="italic" color="rgb(25, 17,
    144)"&gt;'='&lt;/fo:inline&gt;&#8203; ID expr)&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    -&amp;gt; assign(id={$ID.text},&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    descr={$text},&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    varNum={locals.get($ID.text)},&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    v={$expr.st})&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;&nbsp;&nbsp;&nbsp;
    ;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;/fo:list-block&gt;<br>
    <br>
    <br>
    &lt;fo:block id="N1018D" space-after="6pt"&gt;<br>
    &nbsp; The template specifications compute template attributes from
    grammar<br>
    &nbsp; attributes and members such as &lt;fo:inline font-family="Droid
    Sans" font-size="90%"&gt;locals&lt;/fo:inline&gt;.<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:block id="N10194" space-after="6pt"&gt;<br>
    &nbsp; Here are the templates used by rule &lt;fo:inline
    font-family="Droid Sans" font-size="90%"&gt;stat&lt;/fo:inline&gt;:<br>
    &lt;/fo:block&gt;<br>
    <br>
    &lt;fo:block color="rgb(120, 155, 125)" background="rgb(200, 235,
    220)" font-weight="bold" font-size="80%" font-family="Myriad"
    padding-left="0.3em" space-before.maximum="10pt"
    space-before.optimum="6pt" space-before.minimum="6pt"
    keep-with-next="always"&gt;<br>
    &lt;fo:basic-link xmlns:exsl=<a class="moz-txt-link-rfc2396E" href="http://exslt.org/common">"http://exslt.org/common"</a>
    external-destination="url(<a class="moz-txt-link-freetext" href="http://media.pragprog.com/titles/tpantlr2/code/templates/generator/2pass/ByteCode.stg">http://media.pragprog.com/titles/tpantlr2/code/templates/generator/2pass/ByteCode.stg</a>)"&gt;Download
    templates/generator/2pass/ByteCode.stg&lt;/fo:basic-link&gt;<br>
    &lt;/fo:block&gt;<br>
    &lt;fo:list-block provisional-distance-between-starts="0in"
    space-after.maximum="10pt" space-after.optimum="8pt"
    space-after.minimum="6pt" space-before="0pt" font-size="80%"
    font-family="Droid Sans Mono"&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;assign(varNum,v,descr,id) ::=
    &amp;lt;&amp;lt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;; compute
    &amp;lt;descr&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&amp;lt;v&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;istore
    &amp;lt;varNum&amp;gt; ; &amp;lt;id&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&amp;gt;&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;exprStat(v,
    descr) ::= &amp;lt;&amp;lt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false" text-align="start"&gt;&#8203;; compute
    &amp;lt;descr&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&amp;lt;v&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;fo:list-item relative-align="baseline"&gt;<br>
    &lt;fo:list-item-label end-indent="label-end()"
    start-indent="-0.5in"&gt;<br>
    &lt;fo:block font-family="Myriad" width="0.5in" color="rgb(120, 120,
    140)" font-size="65%" text-align="right"/&gt;<br>
    &lt;/fo:list-item-label&gt;<br>
    &lt;fo:list-item-body end-indent="0pt" start-indent="0pt"&gt;<br>
    &lt;fo:block padding-bottom="0pt" line-height="140%"
    padding-top="0pt" margin-bottom="0pt" margin-top="0pt"
    wrap-option="no-wrap" white-space-treatment="preserve"
    white-space-collapse="false"
    text-align="start"&gt;&#8203;&amp;gt;&amp;gt;&lt;/fo:block&gt;<br>
    &lt;/fo:list-item-body&gt;<br>
    &lt;/fo:list-item&gt;<br>
    &lt;/fo:list-block&gt;<br>
    <br>
    <br>
    &lt;fo:block id="N101D5" space-after="6pt"&gt;<br>
    &nbsp; All the expression-related rules in the parser grammar collapse
    into<br>
    &nbsp; a single &lt;fo:inline font-family="Droid Sans"
    font-size="90%"&gt;expr&lt;/fo:inline&gt; rule in the tree grammar:<br>
    &lt;/fo:block&gt;<br>
    <br>
  
!DSPAM:87,4d94852d63731826313041!

</body>
</html>