TranslationSchemeApplier   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 12
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A onToken() 0 6 1
A onRootSymbol() 0 2 1
A __construct() 0 3 1
A onSymbol() 0 6 1
A onFinishProduction() 0 6 1
A onBeginProduction() 0 2 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Remorhaz\UniLex\Parser\LL1;
6
7
use Remorhaz\UniLex\Grammar\SDD\TranslationSchemeInterface;
8
use Remorhaz\UniLex\Parser\Production;
9
use Remorhaz\UniLex\Parser\Symbol;
10
use Remorhaz\UniLex\Lexer\Token;
11
12
class TranslationSchemeApplier extends AbstractParserListener
13
{
14
    private $scheme;
15
16
    public function __construct(TranslationSchemeInterface $scheme)
17
    {
18
        $this->scheme = $scheme;
19
    }
20
21
    /**
22
     * @param int $symbolIndex
23
     * @param Production $production
24
     */
25
    public function onSymbol(int $symbolIndex, Production $production): void
26
    {
27
        //echo "Symbol {$production}[{$symbolIndex}]->{$production->getSymbol($symbolIndex)->getSymbolId()}", PHP_EOL;
28
        $this
29
            ->scheme
30
            ->applySymbolActions($production, $symbolIndex);
31
    }
32
33
    /**
34
     * @param Symbol $symbol
35
     * @param Token $token
36
     */
37
    public function onToken(Symbol $symbol, Token $token): void
38
    {
39
        //echo "Token {$symbol->getSymbolId()} -> {$token->getToken()->getType()}", PHP_EOL;
40
        $this
41
            ->scheme
42
            ->applyTokenActions($symbol, $token);
43
    }
44
45
    /**
46
     * @param Production $production
47
     */
48
    public function onFinishProduction(Production $production): void
49
    {
50
        //echo "Finish {$production}", PHP_EOL;
51
        $this
52
            ->scheme
53
            ->applyProductionActions($production);
54
    }
55
56
    public function onBeginProduction(Production $production): void
57
    {
58
        //echo "Begin {$production}", PHP_EOL;
59
    }
60
61
    public function onRootSymbol(Symbol $symbol): void
62
    {
63
        //echo "Root symbol {$symbol->getSymbolId()}", PHP_EOL;
64
    }
65
}
66