Как я уже говорил в этом вопросе , я использую DFA для отслеживания всех комментариев, строк и т. Д. И я закончил этот DFA с 11 состояниями.
Теперь я собираюсь написать DFAраспознавать ключевые слова в Java.
Идея:
Первоначально pos = 0.pos увеличивается на 1 для каждого перехода.
iskeyword () - моя собственная функция.
isalnum () может быть заменена любой пользовательской функцией, в зависимости от будущих требований.
(Многие несвязанные переходы и собственные циклы не предусмотрены, хотя они присутствуют в реальном DFA).
(q0) -! Isalnum (pos) -------> (q1) --- ключевое слово is (pos, pos + len) ---> (pos + = len) (q2) -----! isalnum (pos) --------> (q3 [сделать прочитанноеключевое слово BOLD ]) --- ключевое слово (pos, pos + len) -> (q2).
Требуется минимум 4 состояния.Приведенный выше метод весьма отличается от обычной реализации DFA .
Мой вопрос ...
- Могу ли я следоватьвыше метод?Правильно ли следовать этому?(если это работает)
- Если я должен реализовать это вышеописанным способом, как я могу это сделать?Построить отдельный DFA для улучшения читабельности?или я мог бы объединить этот DFA с распознающими комментарии, строки (чтобы уменьшить количество состояний)