Domanda

Qual è la differenza tra Flex & amp; Lex e Yacc & amp; Bisonte. Ho cercato su Internet selvaggiamente e non ho trovato nessuna risposta valida.

Posso installare solo Lex e Yacc su Ubuntu, oppure posso installare solo flex e bison. Sono confuso.

  • Lex o Yacc sono ancora gestiti da qualcuno?
  • Sono tutti gratuiti?
  • Se Lex non è gratuito, perché l'ho installato sulla mia distribuzione Ubuntu?

    lex --version
    lex 2.5.35
    
È stato utile?

Soluzione

Ci sono alcune differenze tra Lex e Flex, ma devi abusare di Lex per incorrere in problemi con Flex. (Ho un programma che abusa di Lex e non funziona sotto Flex, quindi.) Questo è principalmente nell'area del lookahead di input; in Lex, è possibile fornire il proprio codice di input e modificare il flusso di caratteri; Flex non ti consente di farlo.

Yacc e Bison sono abbastanza compatibili, sebbene Bison abbia alcuni trucchi extra che può fare.

Probabilmente non puoi trovare copie legittime di (le versioni originali, AT & T di) Lex e Yacc da installare su Ubuntu. Non direi necessariamente che è impossibile, ma non ne sono consapevole. Flex e Bison sono prontamente disponibili e equivalenti per la maggior parte degli scopi. Puoi anche trovare vari programmi alternativi e approssimativamente equivalenti dal mondo BSD.

Lex e Yacc sono gestiti dalle licenze Unix SVRx - aziende come IBM (AIX), HP (HP-UX) e Sun (Solaris) hanno modificato le versioni di Lex e Yacc al loro comando. MKS fornisce anche MKS Lex e MKS Yacc; tuttavia, lo Yacc ha almeno alcune estensioni non standard.

Flex e Bison sono gratuiti. (AT & amp; T) Lex e Yacc non lo sono.

Altri suggerimenti

Bison è l'implementazione / estensione GNU di Yacc, Flex è il successore di Lex. In entrambi i casi, va bene (e consigliato) usare bison / flex.

Sulla maggior parte (tutti?) dei sistemi Linux, " Lex " è in realtà un collegamento simbolico alla flessibilità. Fondamentalmente, è solo un nome diverso dalla versione gratuita.

YACC è disponibile con licenze open source sia da Plan 9 che Open Solaris. Inoltre, c'è anche Berkeley YACC, che è compatibile con YACC originale, ma non condivide il codice sorgente. Berkeley YACC può essere trovato su qualsiasi sistema operativo BSD open source.

Bison in una parte del progetto GNU. E yacc è usato come utility su Berkeley Software Distribution (BSD). Sebbene sia compatibile con yacc, ma Lex e Yacc sono un ricordo del passato. Flex e bison sono ampiamente utilizzati oggi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top