compiler-errors - IPv4和IPv6地址的lex模式

我有一个lex模式文件(test.l),我想在其中识别IPv4地址和IPv6地址的模式。

目前,我使用二进制模式表示法

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

其中'1'是我用于分类的标记。我想扩展此模式以包括IPv4地址(点分十进制)和IPv6地址(四进制表示法)

目前,我的词法分析器文件(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

有人可以指出是什么错误。

最佳答案

我想我看到错字了。

<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]不会实现您想要的功能。它将匹配一个数字0、1、2或5。

https://stackoverflow.com/questions/13618002/

相关文章:

python - scipy给出了 undefined symbol : clapack_sgesv

gcc - 如何在 MinGW 中将错误消息控制设置为详细?

android - BadTokenException无法添加窗口(ProgressDialog)

compiler-errors - 如何使Groovy Shell读取#符号

wpf - WPF,将XAML文件移动到另一个项目

compiler-errors - 免费的基本编译器错误23 : File not found, l

Objective-C - 避免编译错误?

xcode - Xcode无法识别C++语法

c# - 编译委托(delegate)和调度程序时出错

compiler-errors - 带有C++/CLI的VS2012中的错误C2039错误