лабораторная работа. написать программу. Текст задания: Распознаватель должен верно определять последовательность из двоичных чисел, имеющих префикс «0b», разделенных точкой с запятой. Само число после префикса не может начинаться с нуля, если присутствует целая ненулевая часть. Допускается вещественная запись числа. Ввод пользователя Результат работы программы Введите строку для проверки: 0b10110;0b11;0b111010 Входная цепочка верна Введите строку для проверки: 0b10110.101;0b11.0110;0b0.011 Входная цепочка верна Введите строку для проверки: 0b101;0b011 Входная цепочка неверна Введите строку для проверки: 0b1101/0b.01 Входная цепочка неверна Нужно составить порожающую грамматику и на её основе сделать таблицу переходов. После чего нужно написать программу на python используя данную таблицу. Пример как должна выглядеть порождающаяя грамматика, таблица переходов и программа приведены ниже и в фото. Пример порождающей грамматики: <предложение> -> <слово> <разделитель> <предложение> | <слово> <слово> -> <первая буква> <остальные буквы> <первая буква> -> a-e <остальные буквы> -> (a-f | 0-4) <остальные буквы> | ? <разделитель> -> ; Пример программы: class FSA: def __init__(self): self.alphabet = 'abcdef01234;' self.jumping_table = [ [1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0], [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] ] self.state = 0 self.wrong_state = 3 self.right_state_list = [1, 2] def is_right(self, input_text: str) -> bool: self.state = 0 k = 0 while k < len(input_text): word = input_text[k] if word in self.alphabet: word_index = self.alphabet.index(word) self.state = self.jumping_table[self.state][word_index] else: self.state = self.wrong_state k += 1 if self.state in self.right_state_list: return True else: return False def give_answer(self, input_text:str) -> None: if self.is_right(input_text) is True: print(f'Входная цепочка верна') else: print(f'Входная цепочка неверна') if name == '__main__': input_text = input('Введите строку для проверки: ') Machine = FSA() Machine.give_answer(input_text).