<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV>... I hit Chapter 3 and started reading about expressions.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-style-span"><I>*If you are able to answer any of these questions, please send me an email. I am very lost and confused in this section, so even one answered question may help greatly.*</I></SPAN></DIV><DIV><I><BR class="khtml-block-placeholder"></I></DIV>I actually decided to sit down and figure out the Haskell 98 Report today. Everything was going well until I began Chapter 3. Here's the section that has me baffled:<DIV><SPAN class="Apple-style-span"><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>"In the syntax that follows, there are some families of nonterminals indexed by precedence levels (written as superscript). Similarly, the nonterminals <I>op, varop,</I> and <I>conop</I> may have a double index: a letter l, r, or n for left-, right- or non-associativity and a precedence level. A precedence-level variable i ranges from 0 to 9; an associativity variable, a, varies over {l,r,n}. For example, <I>aexp -&gt; </I> ( <I>exp^(i+1) qop^(a,i) ) </I>actually stands for 30 productions, with 10 substitutions for i and 3 for a." *note that the "^" was used to indicate superscript.</SPAN></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>So here's my list of questions so far:</DIV><DIV>1. What are nonterminals?</DIV><DIV>2. What are productions and substitutions?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I tried the dictionary and wikipedia, but neither were very helpful in defining those terms.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Next, it says:</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>exp -&gt; exp^0 :: [context=&gt;] type   (expression type signature)</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN> |  exp^0</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>exp^i -&gt; exp^(i+1) [qop^(n,i) exp^(i+1)]</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>   |   lexp^i</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>   |   rexp^i</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>...</DIV><DIV>From there it continues with more syntax stuff, but I'll stop there for the sake of not typing too much. So here are some questions about this section:<SPAN class="Apple-tab-span" style="white-space:pre"></SPAN></DIV><DIV>1. What the heck is going on?<SPAN class="Apple-tab-span" style="white-space:pre"></SPAN></DIV><DIV>2. How is an expression with a precedence of i considered to be an expression of i+1?</DIV><DIV><SPAN class="Apple-style-span">3. Within the ... section it mentions <I>lexp</I> and <I>rexp</I>. Do those stand for left-associative expressions and right-associative expressions respectively?</SPAN></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I understand the concept of fixity when I see it mentioned in code, but I truly have no idea what 3.0 is talking about. Can anyone shed some light on any of this? I'm still in high school, so if anyone could please explain it to me in layman's terms primarily, or provide some resources explaining more complex terms, It would be greatly appreciated.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Thanks a bunch!</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>Ian Duncan</DIV></BODY></HTML>