Skip to content

yar3333/antlr4-php-runtime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ANTLR4 runtime for PHP

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.

About

PHP runtime for ANTLR4

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages