help with pyparsing
Chris
cwitts at gmail.com
Mon Dec 10 01:56:43 EST 2007
On Dec 10, 7:01 am, Prabhu Gurumurthy <pguru... at gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> All,
>
> I have the following lines that I would like to parse in python using
> pyparsing, but have some problems forming the grammar.
>
> Line in file:
> table <ALINK> const { 207.135.103.128/26, 207.135.112.64/29 }
> table <INTRANET> persist { ! 10.200.2/24, 10.200/22 }
> table <RFC_1918> const { 192.168/16, ! 172.24.1/29, 172.16/12, 169.254/16 }
> table <DIALER> persist { 10.202/22 }
> table <RAVPN> const { 10.206/22 }
> table <KS> const { \
> 10.205.1/24, \
> 169.136.241.68, \
> 169.136.241.70, \
> 169.136.241.71, \
> 169.136.241.72, \
> 169.136.241.75, \
> 169.136.241.76, \
> 169.136.241.77, \
> 169.136.241.78, \
> 169.136.241.79, \
> 169.136.241.81, \
> 169.136.241.82, \
> 169.136.241.85 }
>
> I have the following grammar defn.
>
> tableName = Word(alphanums + "-" + "_")
> leftClose = Suppress("<")
> rightClose = Suppress(">")
> key = Suppress("table")
> tableType = Regex("persist|const")
> ip4Address = OneOrMore(Word(nums + "."))
> ip4Network = Group(ip4Address + Optional(Word("/") +
> OneOrMore(Word(nums))))
> temp = ZeroOrMore("\\" + "\n")
> tableList = OneOrMore(Optional("\\") |
> ip4Network | ip4Address | Suppress(",") | Literal("!"))
> leftParen = Suppress("{")
> rightParen = Suppress("}")
>
> table = key + leftClose + tableName + rightClose + tableType + \
> leftParen + tableList + rightParen
>
> I cannot seem to match sixth line in the file above, i.e table name with
> KS, how do I form the grammar for it, BTW, I still cannot seem to ignore
> comments using table.ignore(Literal("#") + restOfLine), I get a parse error.
>
> Any help appreciated.
> Thanks
> Prabhu
> - -
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.4-svn0 (GNU/Linux)
> Comment: Using GnuPG with SUSE -http://enigmail.mozdev.org
>
> iD8DBQFHXMhFTkjpaeKzB9YRAmZYAJ9Lyys6+xCrGEsyy33AoRWVdUOXQwCfTG9Q
> /f7JZ2pAW6WDSzs79jbDFQE=
> =CGb0
> -----END PGP SIGNATURE-----
Shouldn't tableList be 'ZeroOrMore' instead...
More information about the Python-list
mailing list