wujunxiong 4725452b86 初始版本提交 | %!s(int64=2) %!d(string=hai) anos | |
---|---|---|
.. | ||
README.md | %!s(int64=2) %!d(string=hai) anos | |
parser.template | %!s(int64=2) %!d(string=hai) anos | |
php5.y | %!s(int64=2) %!d(string=hai) anos | |
php7.y | %!s(int64=2) %!d(string=hai) anos | |
phpyLang.php | %!s(int64=2) %!d(string=hai) anos | |
rebuildParsers.php | %!s(int64=2) %!d(string=hai) anos | |
tokens.template | %!s(int64=2) %!d(string=hai) anos | |
tokens.y | %!s(int64=2) %!d(string=hai) anos |
php5.y
: PHP 5 grammar written in a pseudo languagephp7.y
: PHP 7 grammar written in a pseudo languagetokens.y
: Tokens definition shared between PHP 5 and PHP 7 grammarsparser.template
: A kmyacc
parser prototype file for PHPtokens.template
: A kmyacc
prototype file for the Tokens
classrebuildParsers.php
: Preprocesses the grammar and builds the parser using kmyacc
The .y
file is a normal grammar in kmyacc
(yacc
) style, with some transformations
applied to it:
Name[..., ...]
. This is transformed into
new Name(..., ..., attributes())
rebuildParsers.php
for a list)Run php grammar/rebuildParsers.php
to rebuild the parsers. Additional options:
KMYACC
environment variable can be used to specify an alternative kmyacc
binary.
By default the phpyacc
dev dependency will be used. To use the original kmyacc
, you
need to compile moriyoshi's fork.--debug
option enables emission of debug symbols and creates the y.output
file.--keep-tmp-grammar
option preserves the preprocessed grammar file.