-
Notifications
You must be signed in to change notification settings - Fork 0
/
Data.py
100 lines (80 loc) · 2.29 KB
/
Data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
def opendFileInput(filename):
file = open(filename)
fileData = []
for i in file:
data = i.rstrip().split()
fileData.append(data)
file.close()
return fileData
def ndfInput(filedata):
startState = ''
finalStartes = []
states = []
alphabet = []
transitions = []
for i in range(len(filedata)):
if i == 0:
startState = filedata[i]
# states.append(filedata[i][0])
elif i == 1:
finalStartes = filedata[i]
# for j in filedata[i]:
# states.append(j)
else:
states.append(filedata[i][0])
alphabet.append(filedata[i][1])
transitions.append(filedata[i])
ndftData = {
'startState': startState,
'finalStates': finalStartes,
'states': sorted(set(states)),
'alphabet': sorted(set(alphabet)),
'transitions': transitions
}
return ndftData
def ckyInput(filedata):
sentence = []
startSymbol = []
grammar = []
for i in range(len(filedata)):
if i == 0:
sentence = filedata[i]
elif i == 1:
startSymbol = filedata[i][0]
else:
grammar.append(filedata[i])
cky_data = {
'sentence': sentence,
'startSymbol': startSymbol,
'grammar': grammar,
}
return cky_data
def cnfInput(filedata):
# main alphabet/end symbols set
# bảng chữ cái chính/bộ ký hiệu kết thúc
mainAlphabet = []
# sub-alphabet/the symbol set doesn't end or variable set
# bảng chữ cái phụ/tập ký hiệu không kết hay tập biến
subAlphabet = []
# start symbol
# Ký tự suất phát/tiên đề
startSymbol = ''
# finite set of rules
# Tập quy tắc hữu hạn/quy tắc sinh
rules = []
for i in range(len(filedata)):
if i == 0:
mainAlphabet = filedata[i]
elif i == 1:
subAlphabet = filedata[i]
elif i == 2:
startSymbol = filedata[i][0]
else:
rules.append(filedata[i])
cnf_data = {
'mainAlphabet': mainAlphabet,
'subAlphabet': subAlphabet,
'startSymbol': startSymbol,
'rules': rules,
}
return cnf_data