質問

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.

役に立ちましたか?

解決

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.

他のヒント

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

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

An ANTLR3 grammar is available her:

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top