[Haskell-cafe] So far,
so good! Until... (Haskell 98 Report questions)
Ian Duncan
iand675 at gmail.com
Fri Aug 17 07:50:02 EDT 2007
... I hit Chapter 3 and started reading about expressions.
*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 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:
"In the syntax that follows, there are some families of nonterminals
indexed by precedence levels (written as superscript). Similarly, the
nonterminals op, varop, and conop 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, aexp ->
( exp^(i+1) qop^(a,i) ) actually stands for 30 productions, with 10
substitutions for i and 3 for a." *note that the "^" was used to
indicate superscript.
So here's my list of questions so far:
1. What are nonterminals?
2. What are productions and substitutions?
I tried the dictionary and wikipedia, but neither were very helpful
in defining those terms.
Next, it says:
exp -> exp^0 :: [context=>] type (expression type signature)
| exp^0
exp^i -> exp^(i+1) [qop^(n,i) exp^(i+1)]
| lexp^i
| rexp^i
...
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:
1. What the heck is going on?
2. How is an expression with a precedence of i considered to be an
expression of i+1?
3. Within the ... section it mentions lexp and rexp. Do those stand
for left-associative expressions and right-associative expressions
respectively?
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.
Thanks a bunch!
Ian Duncan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20070817/11125d9b/attachment.htm
More information about the Haskell-Cafe
mailing list