Um problema difícil de ser solucionado e que é recorrente para alguns desenvolvedores é de ter um arquivo que atenda a uma sintaxe bem específica em seus projetos de software.
O HTML, por exemplo, possui uma sintaxe bem característica que é de ter uma árvore de conceitos encadeados e encapsulados por “tags”.
Como fazer um programa ou aplicação que tenha arquivos com uma sintaxe singular e que possa ser complexo em relação às regras, e ainda assim legíveis e organizados?
A resposta, que é o motivo desse post, empresta alguns conceitos de compiladores. As duas primeiras etapas de um projeto de compilador são as análises léxica e sintática. A análise léxica identifica palavras-chave nos dados de entrada, e a análise sintática explora as regras definidas para a sua linguagem utilizando as palavras-chave encontradas na fase anterior.
Se o seu projeto é em C, existem duas ferramentas que são as mais difundidas e utilizadas: o lex para análise léxica e o yacc para análise sintática. Essas duas são as ferramentas mais tradicionais, elas foram reescritas e há versões mais recentes com mais suporte da comunidade e documentação atualizada. São os projetos flex e bison, o primeiro substitui o lex, e o segundo o yacc.
Para a linguagem python existem os projetos plex, antlr, ragel e outros.
Em java você pode usar o antlr, jflex, jlex, BYACC/J.
Uma lista mais completa de desses tipos de ferramentas pode ser encontrada através do link: http://en.wikipedia.org/wiki/List_of_parser_generators
Popularity: 10% [?]