Thread: Re: [Pyparsing] SkipTo problem
Brought to you by:
ptmcg
From: Michele P. <mic...@un...> - 2005-04-21 17:29:38
|
pt...@au... wrote: > Michele - > > There are 2 things happening here. One, I think you left out the > opening tags in your grammar variable 'v'; No. I have intentionally omitted the opening tag because the data that I write here not are the real data. > and two, the default form > of SkipTo() scans everything up to BUT NOT INCLUDING the target > expression. You can modify SkipTo to also consume the expression > that it is "SkipTo-ing", but I think the clearer solution is to > include the open/close tags in your grammar. Yes, I don't want to modify the SkipTo class because I want to have a script that is able to work with standard module. > > Try this: > > v = LIST + SkipTo(LIST_END) + LIST_END + \ DESCR + SkipTo(DESCR_END) > + DESCR_END > You might also want to change LIST and DESCR to use the suppress()'ed > versions, as you did for LIST_END and DESCR_END, so that they do not > appear in your output either. Then the SkipTo's should give you only > that text that is between the opening and closing tags. This not work like I want because the output is: ['fw = 1\n net = 1', ':DESCR', 'fw = Firewall\n net = Ethernet config'] but I want only: [':DESCR\n fw = Firewall\n net = Ethernet config'] All this problems because my data file is a file that can have a lot of "section" like :DESCR and its ::DESCR, but I don't know their names. In this example, I know the name of my sections "fw" and "net", only when I parse :LIST section. After, with a loop, I parse these sections, and after with the same logic with :OPT_xxx, where xxx is the name of the sections that I read into "file_names". Example: :LIST fw = 1 net = 1 ::LIST :DESCR fw = Firewall net = Ethernet config ::DESCR :fw :SITE_OPT dir = /etc/shorewall file_names = interfaces, masq, policy, rules, zones ::SITE_OPT :OPT_masq file_path = /etc/shorewall/interfaces ::OPT_interfaces :OPT_rules test = 1 ::OPT_rules :net :SITE_OPT test = 1 ::SITE_OPT ::net > > Thanks for trying pyparsing! Let me know if you have any other > questions. Thanks to you for pyparsing! It's a simple but very powerful parser tool. > > -- Paul > Michele |