铁路图不显示表达式名称

Railroad Diagrams don't show expression names

使用 pyparsing 版本 3.0.0a2 生成一些铁路图我最终得到了名为 Group 或 Unnamed 1、2 等的子图。不用说几个不同的表达式都有名称Group。我们如何为每个表达式指定想要的名称?

请确保您调用 setName 语法中的重要表达式。

此表达式将显示为未命名:

# US social security numbers are of the form 000-00-0000
ssn = Word(nums, exact=3) + '-' + Word(nums, exact=2) + '-' + Word(nums, exact=4)

setName 将名称附加到表达式:

ssn = (Word(nums, exact=3) 
       + '-' + Word(nums, exact=2) 
       + '-' + Word(nums, exact=4)).setName("social_security_number")

记住setNamesetResultsName的区别:

  • setName 将名称附加到表达式本身(一个概念更 现在通过铁路图支持清除)

  • setResultsName 指定要附加到解析结果的名称 由这个表达式提取

一个表达式只有一个名字,例如Word(nums)是一个“整数”。但是该表达式可以在语法中的多个位置使用,因此可以有多个结果名称。看看这个例子中real是如何被多次使用的:

real = Regex(r"\d+\.\d+").setName("real number")
lat_long = "(" + Char("NS") + real("latitude") + "," + Char("EW") + real("longitude") + ")"