ストラウストラップのプログラミング入門(12) 第6章
『ストラウストラップのプログラミング入門』を読む。今日は第6章の6.6まで。
6.5.1で「?」となって、挫折するかと思った。次の文法をコードに落とす解説で、話についていけなくなった。
Expression: Term Expression "+" Term Expression "-" Term Term: Primary Term "*" Primary Term "/" Primary Term "%" Primary Primary: Number "(" Expression ")" Number: floating-point-literal
下から順に、NumberとPrimaryまでは、理解できた。
で、Term関数を眺めていて、トークンストリームに次のトークンがまだ入ってないときはどうなるの? というのがわからなくて、混乱してたんだけど、つまり「Primaryが返るだけ」になるのかな。
(だんだん形振り構わなくなってきたな)
Primaryを1つだけ読み込んで評価した場合ってことになるんだよね、きっと。それならOK。
これほど丁寧に書かれていてもなお、アルゴリズムを追いかけるのは苦手だ。まあそんな人もいるさ。
(2011/09/10 追記)
6.4「文法」(p.156)で、2は式かどうかを考える部分に、合致する説明があった。読み直していて気づいた…。
2. そのPrimary(Number 2)の前には/、*、%がないので、それは(略)完全なTermである。
3. そのTerm(Primary 2)の前には+も-もないので、それは(略)完全なExpressionである。
「トークンストームに次のトークンがまだないとき」は、(すでに読み込んだのがPrimaryであるならば)完全なTermである、ということだろう。