Pergunta

O que é a diferença entre Flex e Lex e Yacc & Bison. Eu procurei na Internet descontroladamente e eu não encontrou qualquer resposta sólida.

Posso instalar pura Lex e Yacc no Ubuntu, ou eu posso instalar somente flex e bisões. Estou confuso.

  • é Lex ou Yacc ainda está sendo mantida por alguém?
  • São todos eles livre?
  • Se Lex não é livre porque eu tê-lo instalado no meu distribuição Ubuntu?

    lex --version
    lex 2.5.35
    
Foi útil?

Solução

Existem algumas diferenças entre Lex e Flex, mas você tem que estar abusando Lex a correr para os problemas com o Flex. (Eu tenho um programa que abusos Lex e não funciona no Flex, portanto.) Isto é principalmente na área de antecipação de entrada; em Lex, você pode fornecer o seu próprio código de entrada e modificar o fluxo de caracteres; Flex não vai deixar você fazer isso.

Yacc e Bison são bem de perto compatível, embora Bison tem alguns truques extras que pode fazer.

Você provavelmente não pode encontrar cópias legítimas de (o original, versões AT & T de) Lex e Yacc para instalar no Ubuntu. Eu não seria necessariamente dizer que é impossível, mas eu não estou ciente de tal. Flex e Vega estão prontamente disponíveis e são equivalentes para a maioria dos propósitos. Você também pode encontrar várias alternativas e programas aproximadamente equivalentes do mundo BSD.

Lex e Yacc são mantidos pelos licenciados Unix SVRx - empresas como a IBM (AIX), HP (HP-UX) e Sun (Solaris) têm versões modificadas de Lex e Yacc em seu comando. MKS também fornece MKS Lex e MKS Yacc; no entanto, o Yacc, pelo menos tem algumas extensões não-padrão.

Flex e Bison são livres. (AT & T) Lex e Yacc não são.

Outras dicas

Bison é o GNU implantação / ampliação de Yacc, Flex é o sucessor do Lex. Em ambos os casos, está tudo bem (e recomendado) para usar bisonte / flex.

Na maioria (todos?) Os sistemas Linux, "Lex" é na verdade um link simbólico para flexionar. Basicamente, é apenas um nome diferente para a versão gratuita.

YACC disponível sob licenças de código aberto de ambos Plan 9 e Open Solaris. Além disso, há também Berkeley YACC, que é compatível com o YACC original, mas não compartilhar o código fonte. Berkeley YACC podem ser encontrados em qualquer um dos sistemas operacionais BSD de código aberto.

Bison em uma parte do projeto GNU. E yacc é usado como um utilitário em Berkeley Software Distribution (BSD) .Embora a sua compatibilidade com yacc, mas Lex e Yacc são uma coisa do passado. Flex e bisões são amplamente utilizados hoje.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top