Nfa::getSymbolTable()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
nc 2
nop 0
dl 0
loc 7
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Remorhaz\UniLex\RegExp\FSM;
6
7
use Remorhaz\UniLex\Exception;
8
9
class Nfa
10
{
11
    private $stateMap;
12
13
    private $epsilonTransitionMap;
14
15
    private $symbolTransitionMap;
16
17
    private $symbolTable;
18
19
    public function getStateMap(): StateMap
20
    {
21
        if (!isset($this->stateMap)) {
22
            $this->stateMap = new StateMap();
23
        }
24
25
        return $this->stateMap;
26
    }
27
28
    public function getEpsilonTransitionMap(): TransitionMap
29
    {
30
        if (!isset($this->epsilonTransitionMap)) {
31
            $this->epsilonTransitionMap = new TransitionMap($this->getStateMap());
32
        }
33
34
        return $this->epsilonTransitionMap;
35
    }
36
37
    public function getSymbolTransitionMap(): TransitionMap
38
    {
39
        if (!isset($this->symbolTransitionMap)) {
40
            $this->symbolTransitionMap = new TransitionMap($this->getStateMap());
41
        }
42
43
        return $this->symbolTransitionMap;
44
    }
45
46
    public function getSymbolTable(): SymbolTable
47
    {
48
        if (!isset($this->symbolTable)) {
49
            $this->symbolTable = new SymbolTable();
50
        }
51
52
        return $this->symbolTable;
53
    }
54
55
    public function setSymbolTable(SymbolTable $symbolTable): void
56
    {
57
        if (isset($this->symbolTable)) {
58
            throw new Exception("Symbol table already exists in DFA");
59
        }
60
        $this->symbolTable = $symbolTable;
61
    }
62
}
63