プログラムのIFの文法など、習うより慣れろで全く気にしたことがなかったが、さて、その文法を解釈する側になるとそうもいかない。
それは、以下の本をよんでいて気づかされた。
別に、コンパイラを作りたいわけではないが、コンパイラを知ることでいろいろな事がわかる。
まず、OSの仕組みや、パターンマッチング、メモリ管理などなど・・・
パーサ関連に初めてまじめに考え始めたのが、仕事でHTMLをパースする必要があったためだ。
私が作ったアプリはHTMLのすべてのリンク(外部リソース)を管理し、その関係を管理するツールだった。
まあ、HTMLのパースはC言語なんかと比べることができるほど複雑ではないですが・・・
でも、やっぱり、この辺の知識としてスタックしておくことは、将来悪くない。
それに、C言語を使い始めているが、やはりCを知るためには、文法を勉強していてもらちがあかない。
コンパイラを知れば、C言語が何を作成しているのがわかるので、より理解が深まるはずだ。
という観点なので、まあ今の段階ではさらっと読み流しています。
といいつつ今回はその文法の話なのだが・・・
IF文は
if ( 式 ){
文;
文;
}
else {
文;
}
のように書く。しかし、正しい仕様では、
If( 式 ) 文 else 文
らしい。
ただしここで、”式”とは?”文”とは?は突き詰めてもらわないでいただきたい。
それをいわれたら、説明がめちゃめちゃ面倒になるし、言いたいことはそういうことではないのであしからず・・・
「文」は1つしかかけないらしい。
そして、文の中に、文が必要な場合には、
{と}をつけて、1つの文として扱うということだ。
使う方にはどうーでもいいことではあるが、いざ、それらを解釈する側にたてば、
これらはキチンと定義されていなければならないし、このように定義した方が確かに解釈が楽だ。
そして、こういう考え方ができることは、矛盾がないプログラミングをする上では必要な視点だろう。
まあ、たいていの人にとってはどーでもいい話。


