Не мог скомпилировать вывод закона

Когда я пытаюсь скомпилировать вывод этой тривиальной программы закона:

# lex.l
integer   printf("found keyword INT");

использование:

$ gcc lex.yy.c

Я добираюсь:

Undefined symbols:
  "_yywrap", referenced from:
      _yylex in ccMsRtp7.o
      _input in ccMsRtp7.o
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

закон - версия говорит мне, что я на самом деле использую 'гибкий провод 2.5.35', хотя ls-fla, 'какой закон' не является символьной ссылкой. Какие-либо идеи, почему вывод не скомпилирует?

5
задан dstnbrkr 10 April 2010 в 05:40
поделиться

2 ответа

Из руководства Flex:

Я получаю ошибку о неопределенном yywrap().

Вы должны предоставить собственную функцию yywrap(), или ссылаться на libfl.a (которая предоставляет такую функцию), или использовать

%option noyywrap

в вашем исходном тексте, чтобы сказать, что вам не нужна функция yywrap().

Также:

Когда сканер получает индикацию конца файла от YY_INPUT, он затем проверяет функцию yywrap(). Если yywrap() возвращает false (ноль), то считается, что функция функция пошла вперед и установила yyin для указания на другой входной файл, и сканирование продолжается. Если функция возвращает true (ненулевое значение), то сканер завершается, возвращая 0 своему вызывающему устройству. Обратите внимание, что в любом случае условие запуска условия запуска остаются неизменными; они не возвращаются к INITIAL.

20
ответ дан 18 December 2019 в 07:53
поделиться

Как следует из ответа Илая, это не тривиальная программа lex. Это тривиальный lex файл, и, таким образом, часть программы, но он (как и любой другой lex файл) должен быть объединен с некоторым кодом C, чтобы получилась полная программа. В частности, вам все еще нужна функция main (которую вы напишете на C или C++ или еще как-то, в отдельном файле), и вам также нужно будет написать функцию yywrap, которая обеспечивает интерфейс между lex-кодом и остальным вашим C-кодом.

0
ответ дан 18 December 2019 в 07:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: