Azmisov
Azmisov

Reputation: 7259

EBNF grammar definitions for PHP?

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.

Upvotes: 19

Views: 11272

Answers (4)

Ivan Kochurkin
Ivan Kochurkin

Reputation: 4501

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).

Upvotes: 2

NikiC
NikiC

Reputation: 101936

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.

Upvotes: 15

SteAp
SteAp

Reputation: 11999

An ANTLR3 grammar is available her:

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

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

Upvotes: 0

dierre
dierre

Reputation: 7220

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

Upvotes: 8

Related Questions