2016-04-03 9 views
0

YACCおよび他のYaccのようなプログラム。現在解析されているトークングループのアクション位置変数があります。私は、いくつかのcsvファイル入力を処理して、未知の理由で列の数が変わってしまうことがあるかもしれません。私のルールでは、quoted_stringsと数字は1つ以上のインスタンスを見つけることができます。YACCまたはBisonのアクション変数位置の最大値

rule : DATE_TOKEN QUOTED_NUMBERS q_string numbers { printf(..... $1,$2....} 

q_string 
    : QUOTED_STRING 
    | QUOTED_STRING q_string 
    ; 

numbers 
    : number numbers 
    | number 
    ; 

number 
    : INT_VALUE 
    | FLOAT_VALUE 
    ; 

{ printf("%s %s %s \n",$<string>1, $<string>1, $<string>1); } 

あるよう

アクションはので、私読まれているどのように多くのトークンを私に告げるランタイムマクロ、constuctまたは変数があり、これまでに解析されたもので物事を行うに追加することができますすべてのトークン値を出力するループを書くことができますか?

はバイソンアクションで$n変数がないトークンに、右側のシンボルを参照してください$最大

答えて

2

は何ですか。対応するrhsオブジェクトが非終端記号である場合、$nは、その非終端記号のセマンティックアクションで$$に代入することによって設定された非終端記号の意味値を参照します。

ルールの右側に5つのシンボルがある場合は、$1$5を使用できます。 "n番目"のシンボルを参照できる変数表記はありません。

関連する問題