【发布时间】:2012-11-29 02:43:50
【问题描述】:
我有一个 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
谁能指出错误是什么。
【问题讨论】:
标签: compiler-errors lex flex-lexer