Bison lex中无法识别的规则错误

Bison lex中无法识别的规则错误,bison,yacc,lex,flex-lexer,Bison,Yacc,Lex,Flex Lexer,我有一个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_

我有一个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*/
    }
dec-octet     [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
IPv4address   {dec-octet}\.{dec-octet}\.{dec-octet}\.{dec-octet}

h16           [0-9A-Fa-f]{1,4}
ls32          {h16}:{h16}|{IPv4address}
IPv6address   ({h16}:){6}{ls32}|
              ::({h16}:){5}{ls32}|
              ({h16})?::({h16}:){4}{ls32}|
              (({h16}:){0,1}{h16})?::({h16}:){3}{ls32}|
              (({h16}:){0,2}{h16})?::({h16}:){2}{ls32}|
              (({h16}:){0,3}{h16})?::{h16}:{ls32}|
              (({h16}:){0,4}{h16})?::{ls32}|
              (({h16}:){0,5}{h16})?::{h16}|
              (({h16}:){0,6}{h16})?::


<S_dst_ip>\{{BINARY_PATTERN}\}|\{{IPv4address}\}|\{{IPv6address}\}   { 

                /*Some code here*/

    }
错误在
“{{BINARY\u PATTERN}}}{{IPv4address}}}}{IPv6address}}”行中。

有人能告诉我错误是什么或者如何修复吗


有人能指出错误是什么吗。

问题可能与您跨多行定义的
IPv6address
有关——这样的定义只会延伸到行的末尾,因此后面的多余行将导致问题。我希望这些行上会出现错误…

问题可能与您跨多行定义的
IPv6address
有关——这样的定义只会一直到行尾,因此后面的额外行将导致问题。我希望这些行上会有错误…

flex非常友好地告诉您哪一行包含错误。也许你可以将这种善意转达给那些你认为可能能够帮助你的人。flex已经很好心地告诉你哪一行包含错误。也许你可以把这种善意转达给那些你认为能够帮助你的人。
flex --header-file="test.h" test.l 
test.l:665: unrecognized rule