В чем разница между Flex & Lex и Yacc & Bison. Я искал в Интернете и не нашел однозначного ответа.
Могу ли я установить на Ubuntu чистые Lex и Yacc, или я могу установить только 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) Лекс и Якк нет.
источник
#include
). В моей книге О'Рейли по lex & yacc (извините, здесь нет под рукой) сказано, что в lex это возможно только с помощью отвратительных хаков.Bison - это реализация / расширение Yacc GNU, Flex - преемник Lex. В любом случае можно (и рекомендуется) использовать bison / flex.
источник
В большинстве (всех?) Linux-систем «Lex» фактически является символической ссылкой на flex. По сути, это просто другое название бесплатной версии.
источник
YACC доступен по лицензиям с открытым исходным кодом от Plan 9 и Open Solaris. Также существует Berkeley YACC, который совместим с исходным YACC, но не имеет исходного кода. Berkeley YACC можно найти в любой из операционных систем BSD с открытым исходным кодом.
источник
Bison в составе проекта GNU. А yacc используется как утилита в Berkeley Software Distribution (BSD). Хотя она совместима с yacc, но Lex и Yacc остались в прошлом. Флекс и бизон сегодня широко используются.
источник