You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用pyparsing 3.0.0a2生成铁路图:如何自定义表达式名称?

嘿,这个问题我之前折腾pyparsing铁路图的时候也碰到过!默认的Group或者Unnamed确实太不友好了,其实用pyparsing内置的setName()方法就能轻松给每个表达式指定想要的名称,具体做法看下面:

给pyparsing表达式自定义铁路图名称的方法

1. 给基础语法元素设置名称

对于Word、Literal这类基础解析元素,直接调用setName()就能替换它在铁路图里的默认显示标签,让图的可读性瞬间提升:

from pyparsing import Word, nums, Literal

# 给整数和加号设置自定义名称
integer = Word(nums).setName("整数")
plus_sign = Literal("+").setName("加号")

2. 给Group子图设置名称

Group作为子容器,默认会显示成“Group”,同样可以用setName()给它指定专属名称,避免多个子图都叫同一个名字:

from pyparsing import Group

# 创建带自定义名称的加法表达式组
addition_expr = Group(integer + plus_sign + integer).setName("加法运算式")

3. 完整可运行示例

下面是一个完整的示例,生成的铁路图里所有元素和子图都会显示我们自定义的名称,再也不会出现杂乱的Group或Unnamed标识:

from pyparsing import Word, nums, Group, Literal, ParserElement

# 启用解析加速,设置允许的空白字符
ParserElement.enablePackrat()
ParserElement.setDefaultWhitespaceChars(" \t\n")

# 定义带自定义名称的基础元素
integer = Word(nums).setName("整数")
plus = Literal("+").setName("加号")
minus = Literal("-").setName("减号")

# 定义带专属名称的组表达式
add_expr = Group(integer + plus + integer).setName("加法表达式")
sub_expr = Group(integer + minus + integer).setName("减法表达式")

# 组合总表达式
arith_expr = add_expr | sub_expr

# 生成铁路图到HTML文件
arith_expr.create_diagram("算术表达式铁路图.html")

小提醒:区分setName和结果命名

这里要注意,setName()是用来设置铁路图里的显示名称;而如果用expr("结果键名")这种写法,是给解析后的结果字典设置键值对的键,两者功能完全不同,可别搞混啦!

内容的提问来源于stack exchange,提问作者Toady

火山引擎 最新活动