0

IPv4アドレスとIPv6アドレスのパターンを認識したいlexパターンファイル(test.l)があります。

現在、たとえばバイナリパターン表記を使用しています

src -ip of 192.168.156.203 is to be written as 
1 src-ip {11000000 10101000 10011100 11001011} 

ここで、「1」は分類に使用するタグです。このパターンを拡張して、IPv4アドレス(ドット付き10進法)とIPv6アドレス(4進表記)を含めたいと思います。

現在、字句解析ファイル(test.l)の関連部分は次のようになっています。

    BINARY_PATTERN [ \t]*[ \t0-1\-\*]+[ \t]*

    <S_src_ip>\{{BINARY_PATTERN}\}  {

         /*Some code here*/
    }

以下のようにコードを少し拡張しました。

<S_dst_ip>\{{BINARY_PATTERN}\}|\{[0-255]\\.[0-255]\\.[0-255]\\.[0-255}\}

IPv4アドレスをサポートするため。上記のコードに何か問題がありますか。また、これを拡張してIPV6パターンをサポートするにはどうすればよいですか。

上記のコードをコンパイルできません。

flex --header-file="test.h" test.l 
test.l:50: bad character class

誰かがエラーが何であるかを指摘できますか?

4

1 に答える 1

1

タイプミスがあると思います。

<S_dst_ip>\{{BINARY_PATTERN}\}|\{[0-255]\\.[0-255]\\.[0-255]\\.[0-255}\}

する必要があります:

<S_dst_ip>\{{BINARY_PATTERN}\}|\{[0-255]\\.[0-255]\\.[0-255]\\.[0-255]\}

しかし、それを超えるために、私はキャラクタークラス[0-255]があなたが望むことを達成するとは思わない。1桁の0、1、2、または5に一致します。

于 2012-11-29T16:27:36.540 に答える