ストラウストラップのプログラミング入門(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である、ということだろう。