Dfa   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 16
dl 0
loc 45
rs 10
c 1
b 0
f 1
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setSymbolTable() 0 6 2
A getTransitionMap() 0 7 2
A getSymbolTable() 0 7 2
A getStateMap() 0 7 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Remorhaz\UniLex\RegExp\FSM;
6
7
use Remorhaz\UniLex\Exception;
8
9
class Dfa
10
{
11
    private $stateMap;
12
13
    private $symbolTable;
14
15
    private $transitionMap;
16
17
    public function getStateMap(): StateMap
18
    {
19
        if (!isset($this->stateMap)) {
20
            $this->stateMap = new StateMap();
21
        }
22
23
        return $this->stateMap;
24
    }
25
26
    public function getTransitionMap(): TransitionMap
27
    {
28
        if (!isset($this->transitionMap)) {
29
            $this->transitionMap = new TransitionMap($this->getStateMap());
30
        }
31
32
        return $this->transitionMap;
33
    }
34
35
    public function getSymbolTable(): SymbolTable
36
    {
37
        if (!isset($this->symbolTable)) {
38
            $this->symbolTable = new SymbolTable();
39
        }
40
41
        return $this->symbolTable;
42
    }
43
44
    /**
45
     * @param SymbolTable $symbolTable
46
     * @throws Exception
47
     */
48
    public function setSymbolTable(SymbolTable $symbolTable): void
49
    {
50
        if (isset($this->symbolTable)) {
51
            throw new Exception("Symbol table already exists in DFA");
52
        }
53
        $this->symbolTable = $symbolTable;
54
    }
55
}
56