Использование Python. В моей грамматике у меня есть такая строка:
ipv6_comp: [ipv6_hex (":" ipv6_hex)~0..5] "::" [ipv6_hex (":" ipv6_hex)~0..5]
Мой преобразователь имеет соответствующую функцию
def ipv6_comp(self, args):
Однако args
выглядит так:
<class 'list'>: ['2001', 'db8', '85a3', '8a2e', '370', '7334']
Потому что буквы не включены. Однако, исходя из этой структуры, для меня, очевидно, невозможно узнать, выглядит ли оригинальный ip как-либо из этих:
2001:db8:85a3::8a2e:370:7334
2001:db8:85a3:8a2e::370:7334
Я думаю, я мог бы просто замаскировать литералы с их собственными правилами, такими как
colon: ":"
doublecolon: "::"
ipv6_comp: [ipv6_hex (colon ipv6_hex)~0..5] doublecolon [ipv6_hex (colon ipv6_hex)~0..5]
, который может быть даже чище. Однако грамматика, которую я использую, генерируется полуавтоматически, и для этого потребуется больше ручного труда.
Есть ли способ, чтобы моя функция преобразователя ipv6_comp
также включала литералы в параметр args
?