rfc:lemon

This is an old revision of the document!


Request for Comments: Replace Bison based parser with Lemon

  • Version: 0.2
  • Date: 2010-07-13
  • Author: Etienne Kneuss, Felipe Pena
  • Status: Abandoned

Abstract

The current parser is bison based. The plan (initially proposed as a GSoC idea) is to replace it with Lemon, which is thread-safe and reentrant.

This task can be divided into two main parts:

  • rewrite zend_language_parser.y into a syntax Lemon understands.
  • generate the template for an engine/re2c integration.

Writing the syntax file is pretty straight-forward, though some additional rules need to be implemented in order to reproduce those bison “mid-rule actions”, which isn't supported by Lemon. It might be a good idea to rethink some of the rules' names along the way.

News from the front

The rewrite is finished, but we still need to figure out some slight performance issues.

An effect of the yacc->lemon switch is that tokens are no longer named in error messages.

Before:

Unexpected T_IF

Now:

Unexpected 'if'

Updates

2008-03-25 : Initial draft. 2010-07-13 : Updates.

rfc/lemon.1378747331.txt.gz · Last modified: 2017/09/22 13:28 (external edit)