PHP的EBNF语法定义?

时间:2012-01-19 18:29:25

标签: php grammar ebnf

我想知道是否有人在某处为PHP编译了EBNF。我找到了this sitethis site。但两者似乎都不完整。 This question is very similar,但它已经一岁了。我想知道是否取得了任何进展。

4 个答案:

答案 0 :(得分:11)

您可能需要查看yacc grammar PHP uses internally。我知道,这不是EBNF,但也许可以满足您的需求。

您可能还想查看re2c lexer definition

答案 1 :(得分:8)

我从中获取以下链接的site是意大利语,但我们有:

答案 2 :(得分:0)

她可以使用ANTLR3语法:

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

上述语法与当前ANTLR版本ANTLR4不兼容。

答案 3 :(得分:0)

ANTLR 4 PHP语法也可用:https://github.com/antlr/grammars-v4/tree/master/php

功能

  • 异构代码处理(islands):
    • HTML
    • 脚本
    • CSS
    • PHP
    • 定界符
  • Alternative syntax
  • Heredoc
  • Interpolation strings(但未完全覆盖)。
  • aspTags。
  • 使用人工字符串片段改进了lexer错误处理 (例如,最后双重封闭的引用:<div attr='value'' />)。

测试

语法已在以下项目中经过测试(无错误解析):

此外,此解析器已经在来自不同CMS(~70000文件)的大量PHP文件上进行了测试。