EBNF grammar definitions for PHP?

10.9k Views Asked by At

I am wondering if someone has compiled an EBNF for PHP somewhere. I found both this site and this site. Both seem like they are incomplete, though. This question is very similar, but it's a year old. I would like to know if there has been any progress made.

4

There are 4 best solutions below

2
On BEST ANSWER

You may want to have a look at the yacc grammar PHP uses internally. I know, it's not EBNF, but maybe it's okay for your needs.

You may also want to look at the re2c lexer definition.

3
On

The site from which I've taken the following links is in italian but we have:

0
On

ANTLR 4 PHP grammar is also available: https://github.com/antlr/grammars-v4/tree/master/php.

Features

  • Heterogeneous code processing (islands):
    • HTML
    • Script
    • CSS
    • PHP
    • Heredoc
  • Alternative syntax.
  • Heredoc.
  • Interpolation strings (but not fully covered).
  • aspTags.
  • Improved lexer error processing with artificial string fragments (for example double closed quote at the end: <div attr='value'' />).

Testing

Grammar has been tested (parsing without errors) on the following projects:

Also, this parser has been tested on plenty number of PHP files from different CMS (~70000 files).

0
On

An ANTLR3 grammar is available her:

  http://code.google.com/p/phpparser/

The above grammar isn't compatible with ANTLR4, the current ANTLR release.