alphabet = open('alphabet.txt', 'r')
finalStates = open('finalStates.txt', 'r')
startState = open('startState.txt', 'r')
states = open('states.txt', 'r')
transitionTable = open('transitionTable.txt', 'r')
start = startState.readline()
curState = start[1]
final = finalStates.readline()
finalState = final[1]
import sys
input = sys.argv[1]
i = 0
for c in input:
while True:
pirate = transitionTable.readline()
if not pirate: break
value = 2
index = pirate[value]
if (curState == index and input[i] == (index + 4)):
curState = pirate[index + 9]
if(curState == finalState):
print ('accept')
value = value + 13
i = i + 1
这是我的代码,它使用5个文件和命令行中的字符串,并通过有限状态机运行它们并返回接受或拒绝。在if(curState == index and input[0] == (index + 4)):
出现我的错误,因为我假设命令行中的input
是一个字符串,并且无法与transitiontable.txt文件中的(index + 4)
的int类型进行比较。然而,我尝试将它们转换为相同的类型,它没有用,也不知道如何前进。
可转换文件采用以下格式: " Q0"" B"" Q1" " Q0"""" NULL" 等等,然后是第一个状态,然后是被测试的字符,然后是它将移动到的状态。