Skip to content

Commit

Permalink
Updated readme.
Browse files Browse the repository at this point in the history
  • Loading branch information
smuuf committed Apr 25, 2022
1 parent 4ccd068 commit dbf646a
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 14 deletions.
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# PEG parser-generator for PHP

### Disclaimer
This is a continuation of [combyna/php-peg](https://github.com/combyna/php-peg), which itself was "a minimally invasive fork" of the original [hafriedlander/php-peg](https://github.com/hafriedlander/php-peg).
This is a _somehow opinionated_ continuation of [combyna/php-peg](https://github.com/combyna/php-peg), which was "a minimally invasive fork" of the original [hafriedlander/php-peg](https://github.com/hafriedlander/php-peg).

## Main features of this fork:
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.
- **Fixed**: Catastrofic backtracking problem *(sometimes happening when compiling a larger grammar)* avoided by simplifying regex that searches for grammar definitions.
- **Fixed**: Fixed tests for PHPUnit 6.5 *(which is now also added as `dev` dependency to `composer.json`)*
- **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`](https://github.com/nette/tester) instead of [PHPUnit](https://github.com/sebastianbergmann/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)*.

Expand Down
3 changes: 0 additions & 3 deletions autoloader.php

This file was deleted.

2 changes: 1 addition & 1 deletion bin/tests
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

cd $(dirname $0)/..

./vendor/bin/tester ./tests
./vendor/bin/tester -p phpdbg ./tests $@
3 changes: 1 addition & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
{
"name": "Premysl Karbula",
"role": "Developer"
},
},
{
"name": "Johannes Künsebeck",
"email": "[email protected]",
Expand All @@ -41,7 +41,6 @@
"hafriedlander\\Peg": "lib"
}
},
"bin": ["bin/peg"],
"require-dev": {
"phpstan/phpstan": "^1.5",
"nette/tester": "^2.4"
Expand Down
3 changes: 2 additions & 1 deletion examples/CalculatedLiterals.peg.inc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

require_once dirname(__DIR__).'/autoloader.php';
require __DIR__ . /../vendor/autoload.php';

use hafriedlander\Peg\Parser;

class CalculatedLiterals extends Parser\Basic {
Expand Down
3 changes: 2 additions & 1 deletion examples/Calculator.peg.inc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

require_once dirname(__DIR__).'/autoloader.php';
require __DIR__ . /../vendor/autoload.php';

use hafriedlander\Peg\Parser;

class Calculator extends Parser\Basic {
Expand Down
3 changes: 2 additions & 1 deletion examples/EqualRepeat.peg.inc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

require_once dirname(__DIR__).'/autoloader.php';
require __DIR__ . /../vendor/autoload.php';

use hafriedlander\Peg\Parser;

class EqualRepeat extends Parser\Packrat {
Expand Down
3 changes: 2 additions & 1 deletion examples/Rfc822.peg.inc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

require_once dirname(__DIR__).'/autoloader.php';
require __DIR__ . /../vendor/autoload.php';

use hafriedlander\Peg\Parser;

/**
Expand Down

0 comments on commit dbf646a

Please sign in to comment.