Siempre que exista un documento estático (por ejemplo, un archivo) o un documento dinámico (por ejemplo, una transmisión en el tiempo) , y ese documento tiene algún tipo de estructura, te encontrarás necesitando algún tipo de analizador. Para estructuras lo suficientemente simples, puede funcionar con un análisis ad hoc (hacking de cadenas, expresiones regulares, etc.). Para las estructuras que no anidan, puede pasar con una máquina de estados finitos; aquí un generador de Lexer suele ser útil. Para estructuras complejas, eres prácticamente un analizador organizado. Puede escribir analizadores sintácticos a mano si está familiarizado con el análisis de estilo de descenso recursivo. Para estructuras realmente complejas, un generador de analizadores es casi siempre una gran ganancia.
Si desea procesar un idioma de computadora, casi necesita lexers y analizadores sintácticos como punto de partida. No son suficientes; tienes que hacer algo con el resultado del analizador.
Un uso realmente espectacular de lexing y análisis que hicimos es traducir JOVIAL, un lenguaje de los años 60, en C, para el bombardero stealth B-2. Ver http://www.semdesigns.com/Products/Services/NorthropGrummanB2.html
Estoy de acuerdo - No quiero volver a escribir uno a mano. ANTLR tiene un poco de una curva de aprendizaje sobre cómo integrarlo en su idioma. – codekaizen