承接 erickjmenezes/resrap 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

erickjmenezes/resrap

最新稳定版本:v0.8.0

Composer 安装命令:

composer require erickjmenezes/resrap

包简介

parser utils

README 文档

README

WARNING: This package is not intended for serious usage.

It's not a framework, but it's a good starting point for building your own parser and a regexp-based scanner.

Requirements

  • PHP ^8.4

Installation

composer require erickjmenezes/resrap

Examples

Two runnable examples are included.

Math calculator (toy) example

Run it:

composer install
php examples/Math/main.php

JSON Parser example

Run it:

composer install
php examples/Json/main.php

Quickstart

1. Declare the tokens your program needs

enum MathToken
{
    case NUMBER;
    case PLUS;
    case MINUS;
    case TIMES;
    case DIV;
}

2. Create a Scanner

use Resrap\Component\Scanner\{Scanner, ScannerBuilder, Pattern, ScannerToken};

function create_scanner(): Scanner
{
    return new ScannerBuilder(
        // skip whitespace
        new Pattern('[\s\t\n\r]+', ScannerToken::SKIP),
        // tokens
        new Pattern('{NUMBER}', MathToken::NUMBER),
        new Pattern('\+', MathToken::PLUS),
        new Pattern('-', MathToken::MINUS),
        new Pattern('\*', MathToken::TIMES),
        new Pattern('\\/', MathToken::DIV),
    )
        ->aliases([
            'NUMBER' => '[0-9]+',
        ])
        ->build();
}

3. Create grammar rules to parse your tokens

%class MathParser;

%use Whatever\Namespace\Of\MathToken;

%start calculator;

number := MathToken::NUMBER { return $1; }
        ;

operator := MathToken::PLUS     { return $1; }
          | MathToken::MINUS    { return $1; }
          | MathToken::TIMES    { return $1; }
          | MathToken::DIV      { return $1; }
          ;

expression := number                     { return $1; }
            | number operator expression { return "{$1} {$2} {$3}"; }
            ;

calculator := expression { return eval("return {$1};"); }
            ;

4. Generate the parser

php bin/resrap compile my-grammar.rr > MathParser.php

5. Use the parser

$parser = new MathParser(create_scanner());

echo $parser->parse('1 + 2 + 3'); // 6

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: mit
  • 更新时间: 2025-09-27