-1
yacc/bisonファイルの中のルールセクションの中括弧に使用される言語と、それに関する良い参考文献があるかどうかは分かります。bison/yaccファイルで使用される言語
stmts : stmt { $$ = new NBlock(); $$->statements.push_back($<stmt>1); }
| stmts stmt { $1->statements.push_back($<stmt>2); }
;
、それが$<stmt>$2
だけでなく$2
私はリファレンスを読むでしょう。第2部にお答えください。私は{$ 1-> statements.push_back($ 2)の間に何の違いも見ませんでした。 }と{$ 1-> statements.push_back($ 2); }。私が見た多くのコードでは、それらは異なった使い方をしています。 –
これは、私が提供したリンクのBisonのドキュメントで完全に説明されています。他のWebサイトの内容をコピーしてstackoverflow.comにコピーしても、何も役立たない。 –
"カスタムマクロプロセッサ"がプロセスの最良の記述であるかどうかはわかりません。 Bisonは 'm4'をマクロプロセッサーとして使用します(あるいはテンプレート言語を言う方がよいでしょう)。 'm4'は多かれ少なかれ標準的なマクロ言語です。 '$'と '@ 'トークンを適切なマクロに置き換えることは、コードの字句スキャン中に行われます。' scan-code.l'の関数 'handle_action_dollar'を参照してください。私はあなたがそれをマクロ置換と呼ぶことができると思いますが、それは私にはより透明なようです。とにかく、upvoted。 – rici