2016-05-17 14 views
2

LexとYaccでコメントを作成するにはどうすればよいですか?LexとYaccでのコメントの作成

これまで私はYaccを試していませんでしたが、Lexでは/* comment */// commentを試しましたが、どちらもコンパイルしませんでした。私はMac上で、組み込みのLexとYaccコンパイラを使っています(あるいは、X-Codeのものかもしれませんが、わかりません)。 LexまたはYaccのコメントの正しい構文は何か、あるいはその両方が望ましいですか?

答えて

0

情報フレックスより:定義において

と%{と%}で囲まれた任意のインデントテキスト またはテキスト(「} {%と 出力にそのままコピーされ、セクションルール削除されました)。 %{}は、 が行内にインデントされていないと表示される必要があります。

この場合、関連するテキストはターゲット言語のコメントにすることができます。定義セクション(ただしルールセクション)において

、 、インデントコメント(/*始まるすなわち、ライン) も次*/までの出力にそのままコピーされます。

有効なCコメントは、コードブロック内のコメントです。

のコメントyacc/* ... */です。

+0

'#comment'のLexコメント構文は機能しません。 (宣言セクションは真中のものです) – Stegosaurus

+1

宣言セクションが最初のセクションです。真ん中はルールセクションです。 rulesセクションでは、インデントされた行(スペースまたはタブで始まる)はlex.yy.cファイルにコピーされたCコードなので、Cのコメントは有効でコピーされ、Cコンパイラのコメントとして扱われます。 –

+1

@ChrisDodd、ah! '[TAB]/* comment * /'と '[TAB] // comment'がうまくいくはずです。 – Stegosaurus

0

どれCコメントがどこかのYaccとLexの両方でのプログラムの中でコメントとして許容され、しかし:

  • のLexやYaccの空白を使用することが重要であり、そう/* comment */に書き込まれたあなたのあなたの文章のLHSに触れるプログラムはではありません!
    • これを動作させるには、LexまたはYaccコードではなく、Cコードに移動するためにタブまたはスペースを行頭に追加する必要があります。
  • gccは素晴らしいコンパイラであり、あなたを大変愛しています。したがって、// commentのコメントを受け入れるため、LexとYaccはうまくありません。これらのコメントは、Cプログラムで動作しますが、は動作しません!
関連する問題