Was ist der Unterschied zwischen Flex & Lex und Yacc & Bison? Ich habe wild im Internet gesucht und keine solide Antwort gefunden.
Kann ich reines Lex und Yacc unter Ubuntu installieren oder kann ich nur Flex und Bison installieren? Ich bin verwirrt.
- Wird Lex oder Yacc immer noch von jemandem gewartet?
- Sind sie alle frei?
Wenn Lex nicht frei ist, warum habe ich es auf meiner Ubuntu-Distribution installiert?
lex --version lex 2.5.35
Antworten:
Es gibt einige Unterschiede zwischen Lex und Flex, aber Sie müssen Lex missbrauchen, um auf die Probleme mit Flex zu stoßen. (Ich habe ein Programm, das Lex missbraucht und daher unter Flex nicht funktioniert.) Dies liegt hauptsächlich im Bereich des Eingabe-Lookaheads. In Lex können Sie Ihren eigenen Eingabecode bereitstellen und den Zeichenstrom ändern. Flex lässt Sie das nicht zu.
Yacc und Bison sind ziemlich gut kompatibel, obwohl Bison einige zusätzliche Tricks hat, die es tun kann.
Sie können wahrscheinlich keine legitimen Kopien von (den Original-, AT & T-Versionen von) Lex und Yacc finden, die unter Ubuntu installiert werden können. Ich würde nicht unbedingt sagen, dass es unmöglich ist, aber ich bin mir dessen nicht bewusst. Flex und Bison sind leicht verfügbar und für die meisten Zwecke gleichwertig. Möglicherweise finden Sie auch verschiedene alternative und ungefähr gleichwertige Programme aus der BSD-Welt.
Lex und Yacc werden von den Unix SVRx-Lizenznehmern verwaltet. Unternehmen wie IBM (AIX), HP (HP-UX) und Sun (Solaris) verfügen über modifizierte Versionen von Lex und Yacc. MKS bietet auch MKS Lex und MKS Yacc an; Der Yacc hat jedoch zumindest einige nicht standardmäßige Erweiterungen.
Flex und Bison sind kostenlos. (AT & T) Lex und Yacc sind es nicht.
quelle
#include
). Mein O'Reilly-Buch über Lex & Yacc (hier leider nicht zur Hand) sagte, dass es in Lex nur durch ekelhafte Hacks möglich war.Bison ist die GNU-Implementierung / Erweiterung von Yacc, Flex ist der Nachfolger von Lex. In beiden Fällen ist es in Ordnung (und empfohlen), Bison / Flex zu verwenden.
quelle
Auf den meisten (allen?) Linux-Systemen ist "Lex" tatsächlich eine symbolische Verbindung zu Flex. Grundsätzlich ist es nur ein anderer Name als die kostenlose Version.
quelle
YACC ist unter Open Source-Lizenzen von Plan 9 und Open Solaris verfügbar. Es gibt auch Berkeley YACC, das mit dem ursprünglichen YACC kompatibel ist, aber keinen Quellcode gemeinsam nutzt. Berkeley YACC kann auf jedem Open-Source-BSD-Betriebssystem gefunden werden.
quelle
Bison in einem Teil des GNU-Projekts. Und yacc wird als Dienstprogramm für Berkeley Software Distribution (BSD) verwendet. Obwohl es mit yacc kompatibel ist, gehören Lex und Yacc der Vergangenheit an. Flex und Bison sind heute weit verbreitet.
quelle