我正在使用pyparsing来摄取gEDA原理图/符号文件格式。大多数是直截了当的,但我不知道如何匹配最初一行上的整数字段指定的以下几行。从先前解析的值解析特定数量的行
文本对象具有类似的格式:
(other objects)
T x y color size vis snv angle align num_lines
Text line one
Line two of the text
Finally, the 'num_lines'th line
(other objects)
与NUM_LINES的整数。这种风格也用于其他一些类型。
作为解决方法,我将这样的行定义为匹配有效对象类型的任何东西而不是。从技术上讲,这种类似对象的线被允许在文本对象
text_meta = Type("T") + coord + color + size + visibility + show_name_value \
+ angle + alignment + num_lines + EOL
text_data_line = ~obj + LineStart() + SkipTo(LineEnd()) + EOL
text_data = Group(OneOrMore(text_data_line)).setResultsName('text')
text_data = text_data.setParseAction(lambda t: '\n'.join(t[0]))
text = text_meta + text_data
生成匹配规则对飞象:
def genLineMatcher(n):
return (LineStart() + Skipto(LineEnd()) + EOL)*n
在桌子上,但我不知道如何指定规则。
谢谢你的提示,浏览器缓存和“回家“早些时候找到了算数阵营。这样的能力会使pyparsing成为一个转到工具,感谢您的写作和分享! – etihwnad 2011-06-03 16:16:01