Download the PHP package tmilos/gold-parser without Composer
On this page you can find all versions of the php package tmilos/gold-parser. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tmilos/gold-parser
More information about tmilos/gold-parser
Files in tmilos/gold-parser
Package gold-parser
Short Description Golder parser PHP runtime LALR engine and compiled grammar loader
License MIT
Informations about the package gold-parser
Gold Parser
Gold parser PHP runtime LALR engine and compiled grammar loader. For more information check Gold Parser website. Library is written based on the Calitha C# GOLD Parser Engine.
Installation
You can use Composer to install
Usage
Use Loader
class to load compiled grammar file, and it's createNewParser()
to get the LALR parser for that grammar.
Events
The Parser
instance has a default event listener, which you could replace. During parsing it dispatches various events.
In the Events
class are enumerated all events that are dispatched.
Event name constant | Event name | Event class | Description |
---|---|---|---|
Events::PARSE_ERROR | gp.parse_error | ParseErrorEvent |
Parsing error |
Events::TOKEN_ERROR | gp.token_error | TokenErrorEvent |
Unexpected token encountered error |
Events::TOKEN_READ | gp.token_read | TokenReadEvent |
Next token has been read |
Events::SHIFT | gp.shift | ShiftEvent |
Parser shifted |
Events::REDUCE | gp.reduce | ReduceEvent |
Parser reduced |
Events::ACCEPT | gp.accept | AcceptEvent |
Parser got into accept state |
Events::GOTO_EVENT | gp.goto | GotoEvent |
Parser state changed with goto |
Errors
By default the parser adds error listeners that will throw exceptions when error events are dispatched. You can add your own
listeners for the error events and disable those default listeners with Parser::setThrowExceptionsOnErrors(false)
Default error handlers will throw ParseException
on PARSE_ERROR
event, and TokenException
on TOKEN_ERROR
event.
Performance
On my modest laptop with PHP 7.0 it takes around 0.2 seconds to load grammar and create parser, and around 0.04 seconds to parse ~700 chars json. Feel free to contribute and improve performance. Think the loading is critical.