Подтвердить что ты не робот

Как использовать flex & bison в Visual Studio 2010?

Я прочитал http://msdn.microsoft.com/en-us/library/aa730877%28vs.80%29.aspx, но этот документ был для VS 2005. Я застрял на части "Импорт файла .rules в Visual С++" в документе, Кажется, что VS 2010 не поддерживает файл .rules, вместо этого он, кажется, использует файл .targets для пользовательских правил сборки.

Кто-нибудь знает, как использовать flex и bison в VS 2010? Спасибо.

4b9b3361

Ответ 1

Хорошей новостью является то, что файл целей работает после перехода на 2010 год.

  • Установите пример. Откройте его с помощью конвертера vs2010, и он выполнит преобразование с 2005 *.rules в 2010 *.targets, *.props и *.xml файл
  • установите cygwin и включите flex, его исходный код, Bison и его исходный код.
  • Добавьте путь cygwin в конец списка исполняемых путей и путь к источнику до конца списка включенных путей.

Хотя этот пример не запускается из-за зависимостей, теперь вы можете создать свой собственный проект и создать собственный лексер и парсер. Единственная проблема, с которой вы столкнетесь, - это использование включенного unistd.h. Добавьте это и не привычка:

#define YY_NO_UNISTD_H 

Я думаю, вы можете получить все остальное, что вам нужно, чтобы построить парсер в 2010 году в книге flex и bison.

Ответ 2

Этот вопрос старый, но для новичков Flex & Bison, таких как я: вы можете использовать инструмент "Win flex-bison", доступный из здесь, и это также содержит руководство по настройке VS С++ проекта в MSVS2010 +

Примечание. Если ссылка не работает, используйте Google и найдите "Win flex-bison"; -)

Ответ 3

Пользовательские правила сборки, указанные Jarda, являются самыми легкими. Ниже приведена альтернатива пользовательским правилам сборки.

Не используйте предварительно скомпилированные заголовки, если вы не знаете, как их использовать достаточно хорошо, чтобы использовать их для этого. У меня возникла проблема с тем, что он жаловался на макроопределения и преждевременный конец файла, пока не отключил использование предварительно скомпилированных заголовков.

Создайте "консольное приложение Win32" и сделайте его пустым проектом (без генерируемого исходного кода). Например, я использую "SimpleFlex" для моего имени проекта.

Необязательный. Вы можете настроить фильтры для файлов VS, чтобы файл ввода Flex был показан в папке "Исходные файлы". В свойствах папки "Исходные файлы" добавьте расширение ( "l" или "lex" ) в список расширений.

Затем создайте файл с расширением "l" (или "lex" ) для проекта; например, "SimpleFlex.l". В файле используйте один из примеров ниже. Затем в настройках проекта создайте пользовательский шаг сборки. Если вы не знакомы с пользовательскими сборками, найдите вкладку "Пользовательский шаг сборки" в настройках проекта. Для этапа пользовательской сборки выполните следующие действия:

Описание: создание лексического анализатора

Команды: C:\Software\FLEX252\flex.exe -o $(ProjDir)\$(InputName).cpp $ (InputPath)

Вывод: $(ProjDir)\$(InputName).cpp

Где:

Описание - это все, что вы хотите использовать

Команды Состоит из пути к Flex, выходного файла и входного файла. Вам нужно будет изменить путь для Flex, чтобы все было правильно для вашей системы.

Вывод Указывает имя файла выходного файла.

После предоставления кода для входного файла Flex, создающего Custom Build Step, скомпилируйте файл. Вы можете использовать Ctrl-F7 для компиляции. На самом деле, на данный момент вы можете просто построить проект; для сборки нет ничего, кроме создания сканера (файл cpp). Пользовательская сборка должна выполнять Flex, но единственный способ, которым вы это знаете, состоит в том, что описание показано в выводе Build. Файл cpp должен быть сгенерирован, а затем он может быть добавлен в проект. Если вы получите описанные выше ошибки (макроопределения и преждевременный конец файла), то отключите предварительно скомпилированные заголовки для проекта.

Процедура для Bison очень похожа.