如何使用 flex 和 bison 验证 ipv4 地址列表?

How to validate a list of ipv4 addresses using flex and bison?

我用来验证 IPv4 地址的正则表达式如下:

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}
%%
{IPv4Address}  { /* return the value */ }

现在我想验证 ipv4 地址列表。如果可以重复使用相同的正则表达式,那就太好了。示例输入:

ip=(1.1.1.1,2.2.2.2,3.3.3.3)

分隔符可以是括号或逗号以外的任何内容。 任何帮助将不胜感激!!

IPV4 是有效 IPv4 地址的令牌 lex returns,在解析器文件中添加这些规则:

ipv4vector:
    "ip" '='  '(' ipv4list ')' 
ipv4list:
    IPV4 | ipv4list ',' IPV4