Behat / Gherkin

Gherkin parser, written in PHP for Behat project
MIT License
1.05k stars 89 forks source link

Migrate parser to `cucumber/common`? #245

Closed ciaranmcnulty closed 1 year ago

ciaranmcnulty commented 2 years ago

I'm going to do a spike at porting the cucumber parser over to PHP within the cucumber repository. This would contain a complete AST of value objects we could use.

For BC it should be possible to write a thin translation layer to map that to the existing Gherkin objects in this repo via a Loader, but a future version of Behat could rely on its AST directly, or even at some point rely on its 'pickles'.

Pros:

Cons:

Any thoughts/feedback?

stof commented 2 years ago

This will probably require a major version bump in Behat (the PyStringNode and the TableNode are accessed directly in steps, and other nodes can be accessed in hooks).

However, if the quality of the PHP code maintained by the Cucumber team can be good, I'm in favor of it.

stof commented 2 years ago

and we could indeed have an intermediate step where behat/gherkin uses cucumber/gherkin-php (or whatever its name) internally and convert the AST.

ciaranmcnulty commented 2 years ago

Yeah it would basically be the same mapping as NdJsoNLoader does in the tests, except from cucumber objects instead of JSON

unkind commented 2 years ago

It requires to implement parser generator for gasparnagy/berp first (template file).

ciaranmcnulty commented 2 years ago

@unkind Just to update, I've started work on this and have a cucumber/messages implementation published on packagist

I've implemented the gherkin berp stuff, just need to make the various other objects that the parser uses (mostly copying the Java implementation)

unkind commented 1 year ago

How it's going? Need some help?

unkind commented 1 year ago

Not sure about English language, but "Scenario" instead of "Example" in Russian sounds literally like "Script" for a movie or even a theatrical play. It's harder to represent to a newbies.

ciaranmcnulty commented 1 year ago

See #253