Todavía no he llegado al campo de los lenguajes formales en informática, así que tal vez mi pregunta es tonta. Estoy escribiendo un analizador NMEA simple en C++, y tengo que elegir:Cuándo usar el generador de analizador, ¿cuándo es suficiente la expresión regular?
Mi primera idea fue construir manualmente una máquina de estados finitos, pero luego pensé que tal vez podría hacerlo con menos trabajo, incluso de manera más eficiente . Antes usaba expresiones regulares, pero creo que la expresión regular NMEA es muy larga y debería tomar "mucho tiempo" para que coincida.
Luego pensé en usar un generador de analizador sintáctico. Creo que todos usan el mismo método: generan una FSA. Pero no sé cuál es más eficiente. ¿Cuándo usas normalmente generadores de analizadores en lugar de expresiones regulares (creo que podrías escribir expresiones regulares en el generador de analizadores)?
Explique las diferencias, me interesan tanto la teoría como la experiencia.