次: , 前: Rpcalc Input, 上: Rpcalc Rules


2.1.2.2 lineの説明

次に、lineの定義について考えます。

     line:     '\n'
             | exp '\n'  { printf ("\t%.10g\n", $1); }
     ;

最初の選択肢は、改行文字であるトークンです。 これは、rpcalcが空行を受け入れ、それに対応するアクションがないので、 無視することを示します。 第2の選択肢は、式の後に改行が続いたものです。 これが、rpcalcを有用にする選択肢です。 問い合わせの中のexpが、この選択肢に現れる最初の記号なので、 expグループの意味値は、$1の値です。 アクションは、問い合わされた計算の結果である、 この値を表示します。

このアクションは、値を$$に代入しないので、例外的です。 したがって、lineに対応する意味値は、初期化されず、 その値は予想できなくなります。 もし、その値が使われると、この仕様はバグになりますが、われわれはこの値を使い ません。ユーザーが入力した行に対する値を表示したら、 その値はもはや必要ありません。