示例#1
0
def generateJFLAPFile(deterministic, typeOfMachine, nodeL, edgeL, initial, accepting):
    """Using the list of nodes, edges, and the starting/final nodes
        Generates a state machine and outputs it to a .jjf file"""
    newNodeL = [StateMachine.Node(node, [], node == initial, node in accepting) for node in nodeL]
    if DEBUG:
        print(newNodeL)
    newEdgeL = [StateMachine.Edge( StateMachine.findNode(edge[0], newNodeL), StateMachine.findNode(edge[1], newNodeL), edge[2]) for edge in edgeL]
    if DEBUG:
        print(newEdgeL)
    for node in newNodeL:
        node.addEdge(newEdgeL)
    if DEBUG:
        print(newNodeL)
    initNode = StateMachine.findNode( initial, newNodeL )
    if DEBUG:
        print(initNode)
    finalNodeL = [StateMachine.findNode( name, newNodeL) for name in accepting]
    if DEBUG:
        print(finalNodeL)
    stateMech = StateMachine.StateMachine( newNodeL, newEdgeL, initNode, finalNodeL, typeOfMachine, deterministic)
    filename = input("What do you want the output to be named?\n")
    filename+='.txt'   
    JFFWriterv2.writeJFFFile(stateMech, filename)