I'm trying to write a recursive parser that will parse nested SMIL tags, that can optionally be empty.This is what I'm trying to parse:\[code\]<layout> <root-layout width="640px" height="480px" /> <region id="left" top="0%" left="0%" width="50%" height="100%" background-color="#CCFF66"> <region id="inseta" top="25%" left="25%" width="50%" height="50%" background-color="#CC33FF" /> </region> <region id="right" top="0%" left="50%" width="50%" height="100%" background-color="#ECC8A3"> <region id="inset" top="25%" left="25%" width="50%" height="50%" background-color="#6666FF" /> </region></layout>\[/code\]I need to pick up all the region elements here, and know when they start and end. I've got fairly far using makeHTMLTags(), but am a bit stumped trying to get multiple results.here's the relevent fragment of the parser:\[code\]regionStart, regionEnd = makeHTMLTags('region')regionStart.setParseAction( self.onRegionStart )regionEnd.setParseAction(self.onRegionEnd )rootLayout, rootLayoutEnd = makeHTMLTags('root-layout')region = Forward()emptyRegion = regionStart.copy()filledRegion = ( regionStart + OneOrMore(region) + regionEnd )region << ( emptyRegion | filledRegion ) + ZeroOrMore(region)layout = layoutStart + Optional(rootLayout) + OneOrMore( region ) + layoutEnd\[/code\]This seems to work if I have only one nested region tag, but with 2 I get this error:\[code\]pyparsing.ParseException: Expected "layout" (at char 303), (line:7, col:11)\[/code\]If anyone can help, you have my thanks!!