"Khoa Nguyen" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] I run into another issue with my grammar:
My input record contains a common part and an extended part. Based on the value of the common part, the extended part will be different. So, I am thinking of parsing the common part first and check the common's value and then parse again for the rest of the record. How do I tell pyparsing to start the 2nd parse at the exact location where the 1st parse left off? ###################################### from pyparsing import * common = Word('aA').setResultsName('value') extend1 = Word('b') extend2 = Word('c') result = common.parseString(record) if result.value == 'a': result1 = extend1.parseString(???) else: result2 = extend2.parseString(???) ###################################### Any reason you can't specify a grammar like this? all = ( 'a' + extend1 ) | ( 'A' + extend2 ) Grammars *can* be made dynamic at runtime - see the implementation of countedArray for a placeholder Forward element, which is modified at parse time using a parse action. But I'd avoid this kind of trickery if you can - it's just too obscure. -- Paul -- http://mail.python.org/mailman/listinfo/python-list