Lark:如何使文字出现在树中

问题描述 投票:0回答:1

使用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参数中也包含文字?

使用Python。在我的语法中,我有这样一行:ipv6_comp:[ipv6_hex(“:” ipv6_hex)〜0..5]“ ::” [ipv6_hex(“:” ipv6_hex)〜0..5]我的变压器具有适当的功能函数def ipv6_comp(self,...

python parsing literals lark-parser
1个回答
0
投票

有两种方法可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.