Qual é a diferença entre Flex & Lex e Yacc & Bison. Eu procurei na Internet descontroladamente e não encontrei nenhuma resposta sólida.
Posso instalar o Lex e o Yacc puro no Ubuntu ou posso instalar apenas o flex e o bison. Estou confuso.
- Lex ou Yacc ainda está sendo mantido por alguém?
- Todos eles são gratuitos?
Se Lex não é gratuito, por que o tenho instalado na minha distribuição Ubuntu?
lex --version lex 2.5.35
Respostas:
Existem algumas diferenças entre Lex e Flex, mas é necessário abusar de Lex para encontrar problemas com o Flex. (Eu tenho um programa que abusa de Lex e, portanto, não funciona com o Flex.) Isso é principalmente na área de procura de entrada; em Lex, você pode fornecer seu próprio código de entrada e modificar o fluxo de caracteres; O Flex não permite que você faça isso.
Yacc e Bison são bastante compatíveis, embora Bison tenha alguns truques extras que ele pode fazer.
Você provavelmente não consegue encontrar cópias legítimas (das versões original e AT&T) de Lex e Yacc para instalar no Ubuntu. Eu não diria necessariamente que é impossível, mas não estou ciente disso. Flex e Bison estão prontamente disponíveis e são equivalentes para a maioria dos propósitos. Você também pode encontrar vários programas alternativos e aproximadamente equivalentes no mundo do BSD.
Lex e Yacc são mantidos pelas licenças Unix SVRx - empresas como IBM (AIX), HP (HP-UX) e Sun (Solaris) têm versões modificadas de Lex e Yacc sob seu comando. A MKS também fornece MKS Lex e MKS Yacc; no entanto, o Yacc tem pelo menos algumas extensões não padrão.
Flex e Bison são gratuitos. (AT&T) Lex e Yacc não são.
fonte
#include
). Meu livro da O'Reilly sobre lex & yacc (não disponível aqui, desculpe) disse que isso só era possível no lex através de hacks repugnantes.Bison é a implementação / extensão GNU do Yacc, Flex é o sucessor de Lex. Em qualquer um dos casos, é bom (e recomendado) usar o bison / flex.
fonte
Na maioria dos sistemas (todos?) Linux, "Lex" é na verdade um link simbólico para flexionar. Basicamente, é apenas um nome diferente da versão gratuita.
fonte
O YACC está disponível sob licenças de código aberto do Plan 9 e do Open Solaris. Além disso, também existe o YACC de Berkeley, que é compatível com o YACC original, mas não compartilha o código-fonte. O YACC de Berkeley pode ser encontrado em qualquer sistema operacional BSD de código aberto.
fonte
Bisonte em uma parte do projeto GNU. O yacc é usado como um utilitário no Berkeley Software Distribution (BSD). Embora seja compatível com o yacc, mas Lex e Yacc são coisa do passado. Hoje, o Flex e o bisonte são amplamente utilizados.
fonte