Я еще не попал в область официальных языков в области компьютерных наук, поэтому, возможно, мой вопрос глупо. Я пишу простой синтаксический анализатор NMEA на C++, и мне нужно выбрать:Когда использовать синтаксический анализатор, достаточно ли регулярного выражения?
Моя первая идея заключалась в том, чтобы создать простой конечный автомат вручную, но потом я подумал, что, возможно, я мог бы сделать это с меньшим количеством работы, даже более эффективно , Раньше я использовал регулярные выражения, но я думаю, что регулярное выражение NMEA очень длинное и должно «долгое время» соответствовать ему.
Тогда я подумал об использовании генератора синтаксического анализатора. Я думаю, что все используют один и тот же метод: они генерируют FSA. Но я не знаю, что более эффективно. Когда вы обычно используете генераторы парсеров вместо регулярных выражений (я думаю, вы могли бы писать регулярное выражение в генераторе синтаксического анализатора)?
Пожалуйста, объясните различия, меня интересуют как теория, так и опыт.