В чем разница между Flex/Lex и Yacc/Bison?
в чем разница между Flex & Lex и Yacc & Bison. Я искал в Интернете дико, и я не нашел никакого твердого ответа.
могу ли я установить pure Lex и Yacc на Ubuntu, или я могу установить только flex и bison. Я в замешательстве.
- Lex или Yacc все еще поддерживается кем-то?
- все ли они свободны?
Если Lex не свободен, почему он установлен на моем Ubuntu распределение?
lex --version
lex 2.5.35
5 ответов:
есть некоторые различия между Lex и Flex, но вы должны злоупотреблять Lex, чтобы столкнуться с проблемами с Flex. (У меня есть программа, которая злоупотребляет Lex и не работает под Flex, поэтому.) Это в первую очередь в области ввода lookahead; в Lex вы можете предоставить свой собственный входной код и изменить поток символов; Flex не позволит вам это сделать.
Yacc и Bison довольно тесно совместимы, хотя у Bison есть некоторые дополнительные трюки, которые он может сделать.
Вы, наверное, не удается найти законные копии (оригинальные, AT&T версии) Lex и Yacc для установки на Ubuntu. Я бы не сказал, что это невозможно, но я не знаю об этом. Flex и Зубр легко доступны и эквивалентны для большинства целей. Вы также можете найти различные альтернативные и приблизительно эквивалентные программы из мира 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 остались в прошлом. Флекс и бизон широко используются сегодня.
Comments