Вопрос

В чем разница между Flex & Lex и Yacc & Bison.Я долго рылся в Интернете и не нашел ни одного вразумительного ответа.

Могу ли я установить чистый Lex и Yacc на Ubuntu, или я могу установить только flex и bison.Я в замешательстве.

  • Lex или Yacc все еще поддерживаются кем-то?
  • Все ли они свободны?
  • Если Lex не является бесплатным, почему он установлен в моем дистрибутиве Ubuntu?

    lex --version
    lex 2.5.35
    
Это было полезно?

Решение

Есть некоторые различия между Lex и Flex, но вы должны злоупотреблять Lex, чтобы столкнуться с проблемами с Flex.(У меня есть программа, которая злоупотребляет Lex и, следовательно, не работает под Flex.) Это в первую очередь относится к области поиска входных данных;в Lex вы можете предоставить свой собственный код ввода и изменить поток символов;Flex не позволит вам этого сделать.

Yacc и Bison довольно тесно совместимы, хотя у Bison есть несколько дополнительных трюков, которые он может выполнять.

Вероятно, вы не можете найти законные копии (оригинальные версии AT & T) Lex и Yacc для установки в Ubuntu.Я бы не обязательно сказал, что это невозможно, но я не в курсе такого.Flex и Bison легкодоступны и эквивалентны для большинства целей.Вы также можете найти различные альтернативные и приблизительно эквивалентные программы из мира BSD.

Lex и Yacc поддерживаются лицензиатами Unix SVRx - такие компании, как IBM (AIX), HP (HP-UX) и Sun (Solaris), имеют модифицированные версии Lex и Yacc по своему усмотрению.MKS также предоставляет MKS Lex и MKS Yacc;однако Yacc, по крайней мере, имеет некоторые нестандартные расширения.

Flex и Bison бесплатны.(AT & T) Lex и Yacc - нет.

Другие советы

Bison - это GNU-реализация / расширение Yacc, Flex - преемник Lex.В любом случае, хорошо (и рекомендуется) использовать bison / flex.

В большинстве (всех?) В системах Linux "Lex" на самом деле является символической ссылкой на flex.По сути, это всего лишь название, отличное от бесплатной версии.

YACC доступен по лицензиям с открытым исходным кодом как от Plan 9, так и от Open Solaris.Кроме того, существует также Berkeley YACC, который совместим с оригинальным YACC, но не использует общий исходный код.Berkeley YACC можно найти в любой из операционных систем BSD с открытым исходным кодом.

Зубр в рамках проекта GNU.И yacc используется в качестве утилиты в Berkeley Software Distribution (BSD).Хотя он совместим с yacc, но Lex и Yacc ушли в прошлое.Сегодня широко используются Flex и bison.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top