Actually, I didn't look closely enough at the failure before assuming it was the same. Now the error is different:
File "yacc.py", line 254, in parse File "yacc.py", line 1035, in parseopt_notrack AttributeError: 'NoneType' object has no attribute 'lexer' This occurs with 'Unexpected end of file'-type errors. In this case, I'm expecting p_error() to be passed None (as that was the previous behavior). On Fri, Feb 6, 2009 at 9:56 AM, David Beazley <[email protected]> wrote: > > I'm not going to modify the lexer to add the lexer attribute to > tokens not processed by token functions. However, I'm pretty sure > that I modified yacc to add this attribute when calling the > p_error() function. I'll double check. Is there some other > place besides p_error() that this is showing up? > > -Dave > > On Feb 6, 2009, at 10:20 AM, Bart Whiteley wrote: > >> >> The bug is still present in rc3. Did you decide against fixing it >> for 3.0? >> >> On Tue, Feb 3, 2009 at 12:33 PM, David Beazley <[email protected]> >> wrote: >>> I'm going to look into this, but may not adopt the exact fix >>> described. >>> The lexer only sets the lexer attribute on tokens that get processed >>> by functions in the lexer. Otherwise, it gets left off. This is a >>> performance optimization. I'm pretty sure I can just add the >>> lexer attribute onto the token in the yacc module right before the >>> error >>> function gets called. >>> >>> Cheers, >>> Dave >>> >>> >>> On Tue 03/02/09 1:39 PM , Bart Whiteley [email protected] sent: >>>> >>>> This bug is still present: >>>> http://groups.google.com/group/ply-hack/browse_thread/thread/ed >>>> 51d0c6c2a27d26/4bb10fe689313e78 >>>> Other than that, 3.0rc1 looks good. >>>> >>>> Here is the updated patch: >>>> >>>> --- ply-3.0rc1/ply/lex.py.orig 2009-02-02 16:21:51.000000000 -0700 >>>> +++ ply-3.0rc1/ply/lex.py 2009-02-03 11:36:02.000000000 -0700 >>>> @@ -315,6 +315,7 @@ class Lexer: >>>> >>>> # Create a token for return >>>> tok = LexToken() >>>> + tok.lexer = self >>>> tok.value = m.group() >>>> tok.lineno = self.lineno >>>> tok.lexpos = lexpos >>>> @@ -335,7 +336,7 @@ class Lexer: >>>> >>>> # If token is processed by a function, call it >>>> >>>> - tok.lexer = self # Set additional attributes >>>> useful in token rules >>>> + # Set additional attributes useful in token rules >>>> self.lexmatch = m >>>> self.lexpos = lexpos >>>> >>>> @@ -359,6 +360,7 @@ class Lexer: >>>> # No match, see if in literals >>>> if lexdata[lexpos] in self.lexliterals: >>>> tok = LexToken() >>>> + tok.lexer = self >>>> tok.value = lexdata[lexpos] >>>> tok.lineno = self.lineno >>>> tok.type = tok.value >>>> >>>> >>>> On Mon, Feb 2, 2009 at 4:38 PM, David Beazley <[email protected] >>>> om> wrote:> >>>>> I've put up a first release candidate of PLY-3.0 >>>> at:> >>>>> http://www.dabeaz.com/ply/ply-3.0rc1.tar.gz> >>>>> This version of PLY provides compatibility with >>>> Python 2.2-3.0.> Except for the removal of a few undocumented >>>> features, it> should be backwards compatible with prior >>>> versions of PLY.> >>>>> Why a new version number? A huge part of the >>>> internal> implementation has been reorganized to >>>> simplify> further maintenance, testing, and debugging. >>>> These changes> were so significant a new version number seemed >>>> in order.> >>>>> I would appreciate feedback from current PLY >>>> users. Please> check it out and let me know if it works with >>>> your existing code> (or not). >>>>> >>>>> Cheers, >>>>> Dave >>>>> >>>>> >>>>> >>>>> >>>>>> >>>>> >>>> >>>> > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "ply-hack" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/ply-hack?hl=en -~----------~----~----~----~------~----~------~--~---
