作者: Bruce.
日時: 2008/3/4(16:52)
Bruce.です。

T.Watanabe writes:

>   ねこ丸です。
 
>   ところで、
> 
> > awkを256倍…で
> >
> > if HOGE
> > {
> > …
> > }
> >
> > if HOGE{
> > …
> > }
> >
> > と挙動が違う、つー指摘は、ショックでした。
> 
>   これホントですか?  本の方を確認しないでスクリプトを書いてみました。

Zazelさんの発言で、ああそういえば v7のawkはソースが見られるように
なったんだよなあということで確認してみました。

if:
	  IF '(' conditional ')' optNL	{ PUTS("if(cond)"); $$ = $3; }

ということで、')' のあとに optNL(省略可能な改行) というのがありますので

statement:
	  simple_stat st	{ PUTS("simple stat"); }
	| if statement		{ PUTS("if stat"); $$ = stat3(IF, $1, $2, nullstat); }
	| if statement else statement
		{ PUTS("if-else stat"); $$ = stat3(IF, $1, $2, $4); }

この if と statement の間に改行があったとしても、そこで文の解析が
途切れるということはないですね。

って、そもそもif の本体がないから構文エラーぢゃん。
なに勘違いかましてんだわしわ。

> 
> パターン {
>   アクション
> }
> 
>   のことであれば別の行に分離しちゃダメだと思うんですけど。

つーことで、でびさんの勘違いに100(お好きな単位をどうぞ)

いじょ。