tmilos/gold-parser 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tmilos/gold-parser

Composer 安装命令:

composer require tmilos/gold-parser

包简介

Golder parser PHP runtime LALR engine and compiled grammar loader

README 文档

README

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.

Author Build Status Coverage Status License

Installation

You can use Composer to install

$ composer require tmilos/gold-parser

Usage

Use Loader class to load compiled grammar file, and it's createNewParser() to get the LALR parser for that grammar.

<?php
$parser = Loader::fromFile('grammar.cgt')->createNewParser();
$nonTerminal = $parser->parse($inputString);
$parser->isAccepted(); // true

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.

统计信息

  • 总下载量: 20
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-12-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固