Passed
Push — master ( b913d7...852e13 )
by Edward
04:18
created

Nfa::getSymbolTransitionMap()   A

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
namespace Remorhaz\UniLex\RegExp\FSM;
4
5
use Remorhaz\UniLex\Exception;
6
7
class Nfa
8
{
9
10
    private $stateMap;
11
12
    private $epsilonTransitionMap;
13
14
    private $symbolTransitionMap;
15
16
    private $symbolTable;
17
18
    public function getStateMap(): StateMap
19
    {
20
        if (!isset($this->stateMap)) {
21
            $this->stateMap = new StateMap();
22
        }
23
24
        return $this->stateMap;
25
    }
26
27
    public function getEpsilonTransitionMap(): TransitionMap
28
    {
29
        if (!isset($this->epsilonTransitionMap)) {
30
            $this->epsilonTransitionMap = new TransitionMap($this->getStateMap());
31
        }
32
33
        return $this->epsilonTransitionMap;
34
    }
35
36
    public function getSymbolTransitionMap(): TransitionMap
37
    {
38
        if (!isset($this->symbolTransitionMap)) {
39
            $this->symbolTransitionMap = new TransitionMap($this->getStateMap());
40
        }
41
42
        return $this->symbolTransitionMap;
43
    }
44
45
    public function getSymbolTable(): SymbolTable
46
    {
47
        if (!isset($this->symbolTable)) {
48
            $this->symbolTable = new SymbolTable();
49
        }
50
51
        return $this->symbolTable;
52
    }
53
54
    public function setSymbolTable(SymbolTable $symbolTable): void
55
    {
56
        if (isset($this->symbolTable)) {
57
            throw new Exception("Symbol table already exists in DFA");
58
        }
59
        $this->symbolTable = $symbolTable;
60
    }
61
}
62