Hi all, I'm writing a PHP parser with PLY, which you can find here: http://github.com/ramen/phply
The lexer is designed to be as close as possible to the one built into PHP (http://php.net/token_get_all), which means that there are tokens for WHITESPACE, OPEN_TAG, CLOSE_TAG, and a few other syntactical elements that are ignored by the parser, but still available in case someone wants to use the lexer for color syntax highlighting, etc. I don't want these tokens to produce any values in the parser output, not even None, so the technique I've been using is to call errok() for these tokens in the error handler: def p_error(t): if t: if t.type in ('WHITESPACE', 'OPEN_TAG', 'CLOSE_TAG', 'COMMENT', 'DOC_COMMENT'): yacc.errok() else: raise SyntaxError('invalid syntax', (None, t.lineno, None, t.value)) else: raise SyntaxError('unexpected EOF while parsing', (None, None, None, None)) http://github.com/ramen/phply/blob/master/phply/phpparse.py#L1297 I wonder if this is the right way to do it, or if there's a better way. For one thing, when I start up my parser, I get the following warnings: WARNING: Token 'DOC_COMMENT' defined, but not used WARNING: Token 'COMMENT' defined, but not used WARNING: Token 'WHITESPACE' defined, but not used WARNING: Token 'OPEN_TAG' defined, but not used WARNING: There are 4 unused tokens I can make these warnings go away by adding a rule that accepts these tokens, but then I start producing values for them as well, which I don't want. They can appear anywhere, so the error handler seems like a convenient place to ignore them, but I wonder if this is an abuse of this feature of PLY. I also wonder if it is thread-safe, since yacc.errok() is module-level. I'd appreciate any advice on the topic, or comments or suggestions about the project in general. Thanks for your time! 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.
