antlr4/antlr4

antlr4 runtime

4.7.7 2022-03-30 11:45 UTC

This package is auto-updated.

Last update: 2024-05-29 04:15:58 UTC


README

Build Status Latest Stable Version Total Downloads

PHP 7.1+ runtime for ANTLR4. See antlr4-php-workspace.

Installation

composer require "antlr4/antlr4"

Using

Download ANTLR4 with PHP support.

Write a grammar file (named Gram.g4 below).

Generate lexer and parser PHP classes. For example, for Windows:

SET CLASSPATH=my-path-to-jar\antlr4-4.7.2-complete.jar;%CLASSPATH%
java org.antlr.v4.Tool -o Generated -Dlanguage=Php -visitor -no-listener -package MyPackage\Generated Gram.g4

Write your visitor class:

<?php
use MyPackage\Generated\Contexts\AContext;
use MyPackage\Generated\Contexts\BContext;

class MyVisitor extends Generated\GramBaseVisitor
{
    function visitA(AContext $ctx)
    {
        return $this->visitChildren($ctx);
    }

    function visitB(BContext $ctx)
    {
        return $this->visitChildren($ctx);
    }
}

Use visitor to parse expression:

<?php
use Antlr4\CharStreams;
use Antlr4\CommonTokenStream;
use MyPackage\Generated\GramLexer;
use MyPackage\Generated\GramParser;

$lexer = new GramLexer(CharStreams::fromString("foo * bar"));
$tokens = new CommonTokenStream($lexer);
$parser = new GramParser($tokens);

$treeA = $parser->a();
$visitor = new MyVisitor();
$rA = $visitor->visit($treeA);
echo $rA;

Please, see examples for details.