1

そのため、数字、浮動小数点数、記号、およびコメントに一致するフレックス プログラムを作成する必要があります。正規表現はファイルにあります。

flex.l ファイルhttp://pastebin.com/iuJ8WW6m

奇妙な部分は出力です。

私がそれを与えているとしましょう:

0 0.0 323 323.4 1.3.4

variable another_variable

"string"

;comment

69

これは出力です:

Number: -->0<--
Float: -->0.0<--
Number: -->323<--
Float: -->323.4<--
Float: -->1.3<--
Number: -->4<--
Symbol: -->variable<--
<--bol: -->another_variable
String: -->"string"<--
<--ment: -->;comment
Number: -->69<--

"another_variable" での出力が <--bol: -->another_variable のようになるのはなぜですか? 私はいくつかのc/c++を知っていますが、私にとってこれは意味がありません。

<--ment: -->;comment についても同様です。

どうやら最後の 3 文字 (<--) を取り、最初の 3 (Com) の上に配置するようですが、なぜでしょうか?

私がそれを与えるだけなら

;comment

出力は「Comment: -->;comment<--」で、その後に改行を入れるとまたぐちゃぐちゃ。printf と ECHO でも同じことを試しましたが、結果は同じです。

助けて、ありがとう!

4

1 に答える 1

0

認識されたコメントまたはシンボルに続く改行シーケンスの一部が yytext に取り込まれているため、デバッグ トレースにエコー バックされていると思われます。

次のように、文字クラスに \r を追加してみてください。

SYMBOLS         [a-zA-Z][^\,\.\"\(\) \n\t\r]*
COMMENTS        ";"[^\n\r]*

いずれにせよ、デバッグ出力をファイルにパイプして、od などのツールを使用して文字ごとに調べることができます。

于 2012-05-09T20:34:52.203 に答える