В чем разница между Flex / Lex и Yacc / Bison? - PullRequest
108 голосов
/ 08 марта 2009

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

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

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

    lex --version
    lex 2.5.35
    

Ответы [ 5 ]

70 голосов
/ 08 марта 2009

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

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) Лекс и Як нет.

29 голосов
/ 08 марта 2009

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

10 голосов
/ 18 апреля 2009

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

8 голосов
/ 27 июля 2009

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

1 голос
/ 15 апреля 2018

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

...