Скомпилированный файл Flex (lex.yy.c) не может найти заголовок / зависимости и странно компилируется - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь скомпилировать небольшое приложение лексического анализатора с помощью Flex.файл lex.yy.c действительно генерируется, но когда я добавляю его в свой проект в Visual Studio, он выдает десятки ошибок, утверждая, что не распознает структуры и функции, которые я определил в связанном заголовке.

Этозаголовок # include'd в файле, который я отправляю во Flex.

Кроме того, когда я пытаюсь устранить эти ошибки, создается впечатление, что некоторые из источников ошибок находятся в текстовом файле Flex Scripts, который я использовал длясначала сгенерируйте файл lex.yy.c или другие файлы, которые не имеют никакого отношения к моему проекту, такие как flexskel.cc

Почему он пытается скомпилировать несвязанные файлы?Я работаю с Windows 7 и Visual Studio 10.

Вот краткая версия файла, который я отправляю во Flex:

%{
#include <stdio.h>
#include "TokenInterface.h"
int lineCounter = 0;
%}
DIGIT   [0-9]
LETTER [a-zA-Z] 
%%
"START_PROG" 
{
storeTokenInList(yytext, lineCounter, START_PROG);
fprintf(yyout,"\nSTART_PROG: %s\n",mostRecentToken->lexema);
return;
}                                                               
"END_PROG"          
{
storeTokenInList(yytext, lineCounter, END_PROG);
fprintf(yyout,"\nEND_PROG: %s\n",mostRecentToken->lexema);
return;
 }                                                           %%     

void main(int argc, char* argv[])
{
token* mostRecentToken;
createEmptyTokenList();
yyin = fopen("c:\\Flex\\input.txt","r");
yyout = fopen("c:\\Flex\\output.txt","w");
yylex();
mostRecentToken = backToken();

while (mostRecentToken->tokenType != EOF)
{
    yylex();
    mostRecentToken = backToken();
}
printf("Flex Out.\n");
}

1 Ответ

0 голосов
/ 16 декабря 2011

Ниже моя ошибка:

Переменная mostRecentToken объявлена ​​в основной функции. Он также используется в сценариях Flex, однако Flex не знает ни одной из переменных, объявленных в основной функции.

Я заменил MostRecentToken в скрипте на yytext и вуаля.

Еще раз спасибо всем:)

...