IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Лексический анализатор (Flex), C, (разделено)
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 26.05.2009 22:18) *

Правый клик на MyComputer (ну, или Мой Компьютер, как он там у тебя называется?) и Properties/Свойства, переходишь на вкладку Advanced/Дополнительно, а дальше по скриншоту видно, что делать...

Во-первых, пока не добавишь путь в переменную Path - так и будет... А во-вторых, я совсем не уверен, что кириллица в пути допустима, попробуй поменять название папки на латинское (когда пути настроишь, и если тогда не получится линковка).

Наконц-то добился компиляции) ТОлько вот такого рода ошибки возникли:
Цитата

F:\3course\tvp\lex.yy.o:lex.yy.c:(.text+0x33d)||undefined reference to `_yywrap'|
F:\3course\tvp\lex.yy.o:lex.yy.c:(.text+0xa15)||undefined reference to `_yywrap'|
F:\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\libmingw32.a(main.o):main.c:(.text+0x104)||undefined reference to `_WinMain@16'|
||=== Build finished: 3 errors, 0 warnings ===|

Что они означают?
volvo, а Вы вообще имели опыт работы с flex'ом ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Исходник засекречен? smile.gif Можно на него посмотреть?

У тебя определенно чего-то не хватает. Или не подключен какой-то C-файл, или H-файл... Ну, и библиотека, разумеется, тоже не подключена, о чем говорит ошибка Линкера.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 0:09) *

Исходник засекречен? smile.gif Можно на него посмотреть?

У тебя определенно чего-то не хватает. Или не подключен какой-то C-файл, или H-файл... Ну, и библиотека, разумеется, тоже не подключена, о чем говорит ошибка Линкера.

Я пишу программу распознования символов для идентификатора, который имеет следующий вид:
letter (letter | digit)*
Программа для flex'а имеет следующий вид:
Цитата
letter [a-z]
digit [0-9]
symbol [ ,./<>?;':"{}!@#$%^&*()_+=-]
error ({digit}|{symbol})({letter}|{symbol}|{digit})*
identifier {letter}({letter}|{digit})*
%%
{error} {printf("error %s",yytext);}
{identifier} {printf("identifier %s",yytext);}
%%

Готовый с-шный файл также прикрепил...
Чего не хватает для компиляции? И поле error ({digit}|{symbol})({letter}|{symbol}|{digit})*, что означает и как его получить?

p.s. Спасибо,volvo, что разделили темы)

Сообщение отредактировано: Rocket -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Готовый с-шный файл также прикрепил...
Куда, можно поинтересоваться? smile.gif

Рассказываю с нуля, что сделал с твоим кодом, приведенным выше:
1) сохранил его в файл с именем test.lex в папку, куда установлен Flex (у меня - D:\Program Files\GnuWin32\bin)
2) запустил команду
D:\Program Files\GnuWin32\bin>flex test.lex
, в результате чего получил файл lex.yy.c в той же папке.
3) этот файл lex.yy.c подключил к проекту CodeBlocks (единственный файл)
4) зашел в Project->Build Options->(вкладка)Linker Settings, под листбоксом "Link Libraries" есть кнопка Add, с ее помощью добавил к проекту библиотеку D:\Program Files\GnuWin32\lib\libfl.a, нажал Ok, собрал проект Ctrl+F9... Никаких ошибок не возникло, создался EXE-файл. Что я делаю не так?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 17:45) *

Куда, можно поинтересоваться? smile.gif

Рассказываю с нуля, что сделал с твоим кодом, приведенным выше:
1) сохранил его в файл с именем test.lex в папку, куда установлен Flex (у меня - D:\Program Files\GnuWin32\bin)
2) запустил команду
D:\Program Files\GnuWin32\bin>flex test.lex
, в результате чего получил файл lex.yy.c в той же папке.
3) этот файл lex.yy.c подключил к проекту CodeBlocks (единственный файл)
4) зашел в Project->Build Options->(вкладка)Linker Settings, под листбоксом "Link Libraries" есть кнопка Add, с ее помощью добавил к проекту библиотеку D:\Program Files\GnuWin32\lib\libfl.a, нажал Ok, собрал проект Ctrl+F9... Никаких ошибок не возникло, создался EXE-файл. Что я делаю не так?

А где можно взять эту библиотеку? у меня её нет...

p.s. Прикреплять с-шный файл уже нет смысла)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






У тебя установлен Flex вообще? Вот отсюда качается установщик под Windows (1.3 Мб):
Прямая ссылка

Если установлен - то в его папке \lib
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 18:31) *

У тебя установлен Flex вообще? Вот отсюда качается установщик под Windows (1.3 Мб):
Прямая ссылка

Если установлен - то в его папке \lib

У меня просто файл flex.exe, его и использовал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Просто файла недостаточно, ты с его помощью можешь (скорее всего) получить C-файл, но вот откомпилировать ты его уже не сможешь, нужна библиотека, причем версии, подходящей к этому же flex.exe. Они ж постоянно меняются, что-то добавляется, что-то убирается...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 18:44) *

Просто файла недостаточно, ты с его помощью можешь (скорее всего) получить C-файл, но вот откомпилировать ты его уже не сможешь, нужна библиотека, причем версии, подходящей к этому же flex.exe. Они ж постоянно меняются, что-то добавляется, что-то убирается...


Добавил к проекту библиотеку - всё заработало)
И всё-таки, вот такое объявление error ({digit}|{symbol})({letter}|{symbol}|{digit})*, что означает?

volvo, Вы не могли дать ссылочку набодобие как на flex, только на bison, чтоб тоже с библиотеками?..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Установщик Бизона для Windows лежит здесь

Цитата
такое объявление error ({digit}|{symbol})({letter}|{symbol}|{digit})*, что означает?
Это регулярное выражение, которое определяет, что считать ошибкой. Подробнее о разборе регулярок - здесь: Flex Doc -> 6. Patterns
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 27.05.2009 19:36) *

Установщик Бизона для Windows лежит здесь

Это регулярное выражение, которое определяет, что считать ошибкой. Подробнее о разборе регулярок - здесь: Flex Doc -> 6. Patterns

volvo, большое спасибо за ссылки - бизон и мануал пригодились)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 18:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name