Quelle est la différence entre Flex & Lex et Yacc & Bison. J'ai fouillé Internet de manière extravagante et je n'ai trouvé aucune réponse solide.
Puis-je installer pure Lex et Yacc sur Ubuntu, ou je ne peux installer que flex et bison. Je suis confus.
- Est-ce que Lex ou Yacc sont toujours entretenus par quelqu'un?
- Sont-ils tous gratuits?
Si Lex n'est pas gratuit, pourquoi l'ai-je installé sur ma distribution Ubuntu?
lex --version lex 2.5.35
Réponses:
Il y a quelques différences entre Lex et Flex, mais vous devez abuser de Lex pour rencontrer les problèmes avec Flex. (J'ai un programme qui abuse de Lex et ne fonctionne donc pas sous Flex.) C'est principalement dans le domaine de la recherche d'entrée; dans Lex, vous pouvez fournir votre propre code d'entrée et modifier le flux de caractères; Flex ne vous laissera pas faire cela.
Yacc et Bison sont assez étroitement compatibles, bien que Bison ait quelques astuces supplémentaires qu'il peut faire.
Vous ne pouvez probablement pas trouver de copies légitimes de (les versions originales, AT&T de) Lex et Yacc à installer sur Ubuntu. Je ne dirais pas nécessairement que c'est impossible, mais je n'en suis pas au courant. Flex et Bison sont facilement disponibles et sont équivalents dans la plupart des cas. Vous pouvez également trouver divers programmes alternatifs et à peu près équivalents du monde BSD.
Lex et Yacc sont maintenus par les licenciés Unix SVRx - des sociétés comme IBM (AIX), HP (HP-UX) et Sun (Solaris) ont des versions modifiées de Lex et Yacc à leur commande. MKS fournit également MKS Lex et MKS Yacc; cependant, le Yacc a au moins quelques extensions non standard.
Flex et Bison sont gratuits. (AT&T) Lex et Yacc ne le sont pas.
la source
#include
). Mon livre O'Reilly sur lex & yacc (pas à portée de main ici, désolé) dit que ce n'était possible dans lex que par des hacks dégoûtants.Bison est l'implémentation / extension GNU de Yacc, Flex est le successeur de Lex. Dans les deux cas, il est bon (et recommandé) d'utiliser bison / flex.
la source
Sur la plupart des systèmes Linux (tous?), "Lex" est en fait un lien symbolique vers flex. En gros, ce n'est qu'un nom différent de la version gratuite.
la source
YACC est disponible sous les licences open source de Plan 9 et Open Solaris. En outre, il existe également Berkeley YACC, qui est compatible avec le YACC d'origine, mais ne partage pas le code source. Berkeley YACC peut être trouvé sur l'un des systèmes d'exploitation BSD open source.
la source
Bison dans une partie du projet GNU. Et yacc est utilisé comme un utilitaire sur Berkeley Software Distribution (BSD). Bien qu'il soit compatible avec yacc, mais Lex et Yacc appartiennent au passé. Le flex et le bison sont largement utilisés aujourd'hui.
la source