LexとYaccを使用してパーサーを設計していますが、コメントに関する問題が発生しています。
次のLexルールを使用します。
'#'[^('\r'|'\n')]* { /* do nothing */ }
動作しますが、実行の最後にすべてのコメントが標準出力に出力されます。それをクリアする方法はありますか?提案ありがとうございます。
文字、、、、'
およびは|
で特別な意味を持たないため、それらを含まないコメントのみを照合(および破棄)します。さらに、lexのほとんどのバージョンでは、特別な意味はまったくありません。リテラル文字列を引用するためにのみ使用できます。おそらく必要なものは次のとおりです。(
)
[]
'
"
"#"[^\r\n]* { /* do nothing */ }
また、#
特別な意味もありませんので、引用する必要はありません。
一般に、パーサーへの入力としてlex(またはflex)を使用している場合、デフォルトのエコー動作は必要ないため、最後に「catch-all」ルールを追加するのが最善です。
.|\n { fprintf(stderr, "Unexpected character '%c' in input\n", *yytext); }