2
2
3
3
from typing import Dict , List , AbstractSet , Tuple , Optional , Hashable
4
4
5
- from ..objects .cfg_objects import Variable , CFGConvertible
5
+ from ..objects .cfg_objects import Variable , CFGObjectConvertible
6
6
7
7
8
8
class CFGVariableConverter :
9
9
"""A CFG Variable Converter"""
10
10
11
11
def __init__ (self ,
12
- states : AbstractSet [CFGConvertible ],
13
- stack_symbols : AbstractSet [CFGConvertible ]) -> None :
12
+ states : AbstractSet [CFGObjectConvertible ],
13
+ stack_symbols : AbstractSet [CFGObjectConvertible ]) -> None :
14
14
self ._counter = 0
15
- self ._inverse_states_d : Dict [CFGConvertible , int ] = {}
15
+ self ._inverse_states_d : Dict [CFGObjectConvertible , int ] = {}
16
16
self ._counter_state = 0
17
17
for self ._counter_state , state in enumerate (states ):
18
18
self ._inverse_states_d [state ] = self ._counter_state
19
19
state .index_cfg_converter = self ._counter_state
20
20
self ._counter_state += 1
21
- self ._inverse_stack_symbol_d : Dict [CFGConvertible , int ] = {}
21
+ self ._inverse_stack_symbol_d : Dict [CFGObjectConvertible , int ] = {}
22
22
self ._counter_symbol = 0
23
23
for self ._counter_symbol , symbol in enumerate (stack_symbols ):
24
24
self ._inverse_stack_symbol_d [symbol ] = self ._counter_symbol
@@ -29,7 +29,7 @@ def __init__(self,
29
29
for _ in range (len (stack_symbols ))] for _ in
30
30
range (len (states ))]
31
31
32
- def _get_state_index (self , state : CFGConvertible ) -> int :
32
+ def _get_state_index (self , state : CFGObjectConvertible ) -> int :
33
33
"""Get the state index"""
34
34
if state .index_cfg_converter is None :
35
35
if state not in self ._inverse_states_d :
@@ -38,7 +38,7 @@ def _get_state_index(self, state: CFGConvertible) -> int:
38
38
state .index_cfg_converter = self ._inverse_states_d [state ]
39
39
return state .index_cfg_converter
40
40
41
- def _get_symbol_index (self , symbol : CFGConvertible ) -> int :
41
+ def _get_symbol_index (self , symbol : CFGObjectConvertible ) -> int :
42
42
"""Get the symbol index"""
43
43
if symbol .index_cfg_converter is None :
44
44
if symbol not in self ._inverse_stack_symbol_d :
@@ -48,9 +48,9 @@ def _get_symbol_index(self, symbol: CFGConvertible) -> int:
48
48
return symbol .index_cfg_converter
49
49
50
50
def to_cfg_combined_variable (self ,
51
- state0 : CFGConvertible ,
52
- stack_symbol : CFGConvertible ,
53
- state1 : CFGConvertible ) -> Variable :
51
+ state0 : CFGObjectConvertible ,
52
+ stack_symbol : CFGObjectConvertible ,
53
+ state1 : CFGObjectConvertible ) -> Variable :
54
54
""" Conversion used in the to_pda method """
55
55
i_stack_symbol , i_state0 , i_state1 = self ._get_indexes (
56
56
stack_symbol , state0 , state1 )
@@ -74,19 +74,19 @@ def _create_new_variable(self,
74
74
return temp
75
75
76
76
def set_valid (self ,
77
- state0 : CFGConvertible ,
78
- stack_symbol : CFGConvertible ,
79
- state1 : CFGConvertible ) -> None :
77
+ state0 : CFGObjectConvertible ,
78
+ stack_symbol : CFGObjectConvertible ,
79
+ state1 : CFGObjectConvertible ) -> None :
80
80
"""Set valid"""
81
81
i_stack_symbol , i_state0 , i_state1 = self ._get_indexes (
82
82
stack_symbol , state0 , state1 )
83
83
prev = self ._conversions [i_state0 ][i_stack_symbol ][i_state1 ]
84
84
self ._conversions [i_state0 ][i_stack_symbol ][i_state1 ] = (True , prev [1 ])
85
85
86
86
def is_valid_and_get (self ,
87
- state0 : CFGConvertible ,
88
- stack_symbol : CFGConvertible ,
89
- state1 : CFGConvertible ) -> Optional [Variable ]:
87
+ state0 : CFGObjectConvertible ,
88
+ stack_symbol : CFGObjectConvertible ,
89
+ state1 : CFGObjectConvertible ) -> Optional [Variable ]:
90
90
"""Check if valid and get"""
91
91
i_state0 = self ._get_state_index (state0 )
92
92
i_stack_symbol = self ._get_symbol_index (stack_symbol )
@@ -102,9 +102,9 @@ def is_valid_and_get(self,
102
102
return current [1 ]
103
103
104
104
def _get_indexes (self ,
105
- stack_symbol : CFGConvertible ,
106
- state0 : CFGConvertible ,
107
- state1 : CFGConvertible ) \
105
+ stack_symbol : CFGObjectConvertible ,
106
+ state0 : CFGObjectConvertible ,
107
+ state1 : CFGObjectConvertible ) \
108
108
-> Tuple [int , int , int ]:
109
109
i_state0 = self ._get_state_index (state0 )
110
110
i_stack_symbol = self ._get_symbol_index (stack_symbol )
0 commit comments