Skip to content

smuuf/php-peg

 
 

Repository files navigation

PEG parser-generator for PHP

Disclaimer

This is a somehow opinionated continuation of combyna/php-peg, which was "a minimally invasive fork" of the original hafriedlander/php-peg.

From the several originally available types of PEG parsers only Basic and Packrat (recommended) remain now.

Notable features of this fork:

  • Fix, Optimization: Packrat parser overhaul. Simplified logic using arrays instead of a string. Arrays ultimately seemed to be more fit for the job, memory-wise. This also fixed occasional problem with accessing undefined indexes in packrat cache.
  • Modern code style: Codebase uses new (PHP7+) language features and code format more familiar to current modern PHP.
  • CLI interface is removed: Just call \hafriedlander\Peg\Compiler::compile($grammarDefinitionFile) directly however you like.
  • Testing: Test suite is rewritten to use Nette Tester instead of PHPUnit.
  • Fixed: Catastrophic backtracking problem (sometimes happening when compiling a larger grammar) avoided by simplifying regex that searches for grammar definitions.
  • Optimization: Using native PHP constants and functions with absolute namespace is slightly faster (changed in generated code, too).
  • Optimization: Use strict comparisons where possible (even in generated code).

Documentation

See the documentation of the original library.

About

PEG (parsing expression grammar) compiler for PHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 99.6%
  • Shell 0.4%