def xtm(): form = MyForm() if form.validate_on_submit(): tm = False states = parser1.dict_parse(form.states.data) states_dict = literal_eval(states) input_s = parser1.dict_parse(form.input_symbols.data) input_symbols_dict = literal_eval(input_s) tape_s = parser1.dict_parse(form.tape_symbols.data) tape_symbols_dict = literal_eval(tape_s) initial_state_d = form.initial_state.data if form.left_end.data: left_end_d = form.left_end.data else: left_end_d = '>' try: transitions_d = literal_eval(form.prechody.data) except: transitions_d = {} success_message = ("Neočakávaná chyba v prechodovej funkcii") flash(success_message) if form.blank_symbol.data: blank_symbol_d = form.blank_symbol.data else: blank_symbol_d = '#' reject_state_d = form.reject_state.data final_states_d = form.final_states.data try: xdtm = XDTM(states=states_dict, input_symbols=input_symbols_dict, tape_symbols=tape_symbols_dict, left_end=left_end_d, transitions=transitions_d, initial_state=initial_state_d, blank_symbol=blank_symbol_d, reject_state=reject_state_d, final_states=final_states_d) if xdtm: tm = True except (exceptions.InvalidStateError, exceptions.InvalidSymbolError, exceptions.MissingStateError, exceptions.MissingSymbolError, exceptions.InitialStateError, exceptions.FinalStateError, exceptions.RejectStateError, exceptions.LeftEndError, exceptions.RejectionError, exceptions.InvalidDirectionError, exceptions.Badcounttapes) as err: tm = False success_message = (err) flash(success_message) if tm: try: tmachine = Tmachine(definicia=form.funkcia.data, tm_d_n_x='xtm') db.session.add(tmachine) db.session.commit() except exc.IntegrityError: db.session().rollback() tm = False success_message = ( "Definícia/Názov TM už existuje prosím zvolte iný názov") flash(success_message) if tm: name = str(tmachine.id) with open("tm{}.py".format(name), "w") as text_file: text_file.write( "from turing_machine.xdtm import XDTM \nxdtm = XDTM(" "\nstates = {0}" ",\ninput_symbols = {1}," "\ntape_symbols = {2},\nleft_end = '{3}'," "\ntransitions = {4}," "\ninitial_state = '{5}',\nblank_symbol = '{6}'," "\nreject_state = '{7}', \nfinal_states = '{8}' \n)". format(states_dict, input_symbols_dict, tape_symbols_dict, left_end_d, transitions_d, initial_state_d, blank_symbol_d, reject_state_d, final_states_d)) success_message = ('Nový viac páskový DTM: ' + form.funkcia.data + ' je vytvorený') flash(success_message) return redirect(url_for('index')) return render_template('xtm.html', title='XTM', form=form)
def xtm(): form = MyForm() if form.validate_on_submit(): tm = False states = parser1.dict_parse(form.states.data) states_dict = literal_eval(states) input_s = parser1.dict_parse(form.input_symbols.data) input_symbols_dict = literal_eval(input_s) tape_s = parser1.dict_parse(form.tape_symbols.data) tape_symbols_dict = literal_eval(tape_s) initial_state_d = form.initial_state.data if form.left_end.data: left_end_d = form.left_end.data else: left_end_d = '>' try: transitions_d = literal_eval(form.prechody.data) except: transitions_d = {} success_message = ("Neočakávaná chyba v prechodovej funkcii") flash(success_message) if form.blank_symbol.data: blank_symbol_d = form.blank_symbol.data else: blank_symbol_d = '#' reject_state_d = form.reject_state.data final_states_d = form.final_states.data try: xdtm = XDTM( states = states_dict, input_symbols= input_symbols_dict, tape_symbols= tape_symbols_dict, left_end = left_end_d, transitions = transitions_d, initial_state = initial_state_d, blank_symbol = blank_symbol_d, reject_state = reject_state_d, final_states = final_states_d ) if xdtm: tm = True except(exceptions.InvalidStateError,exceptions.InvalidSymbolError,exceptions.MissingStateError,exceptions.MissingSymbolError, exceptions.InitialStateError,exceptions.FinalStateError,exceptions.RejectStateError,exceptions.LeftEndError, exceptions.RejectionError,exceptions.InvalidDirectionError,exceptions.Badcounttapes) as err: tm = False success_message = (err) flash(success_message) if tm: try: tmachine = Tmachine(definicia= form.funkcia.data,tm_d_n_x='xtm', states =states,input_symbols = input_s, tape_symbols = tape_s,left_end = left_end_d, transitions = form.prechody.data, initial_state = initial_state_d, blank_symbol = blank_symbol_d,reject_state = reject_state_d, final_states = final_states_d) db.session.add(tmachine) db.session.commit() success_message = ('Nový viac páskový DTM: '+form.funkcia.data+' je vytvorený') flash(success_message) return redirect(url_for('main.index')) except exc.IntegrityError: db.session().rollback() tm = False success_message = ("Definícia/Názov TM už existuje prosím zvolte iný názov") flash(success_message) return render_template('xtm.html', title='XTM', form=form)