gpt4 book ai didi

c++ - “过早的 EOF”和 'Bad Character' 错误

转载 作者:行者123 更新时间:2023-11-28 06:42:52 27 4
gpt4 key购买 nike

我在之前的类(class)中写过 Flex 的东西,但我以前的工作代码都没有解决我遇到的问题。

我在 StackOverflow 上搜索了一个解决方案,但没有一个能解决它。

我有:

  • 已检查我在 %{ ... %} 区域没有错误的空格
  • 尝试使用#include <'iostream>
  • 尝试了 %option noyywrap

这是我的代码(我删除了所有标记等,因为它们有很多):

%{

...

int numLines = 0;

void printTokenInfo(char* tokenType, char* lexeme);

void handleComments(char* text);

%}

WSPACE [ \t\r]+
NEWLINE \n
DIGIT [0-9]
LETTER [a-zA-Z]
IDENT ({LETTER}|_)({LETTER}|{DIGIT}|_)*
INTCONST {DIGIT}+
CHARCONST "'"{LETTER}+"'"

%%

...

%%

// User-written code goes here
void printTokenInfo(char* tokenType, char* lexeme)
{
printf("A");
printf("TOKEN: %s LEXEME: %s\n", tokenType, lexeme);
}

void handleComments(char* text)
{
printf("%s\n", text);
}

int yywrap() { return 1; }

int main()
{
do {
yylex();
} while (!feof(yyin));
return 0;
}

下面是我编译和运行它的方式:

flex FILENAME.l
g++ lex.yy.c -o lexer
lexer < INPUT.txt

导师为我们提供了输入文件,但没有一个有效。它们都因“过早的 EOF”或“坏字符”而失败

有什么想法吗?

最佳答案

好吧,我想我终于找到了答案...尝试使用完整路径运行它,而不仅仅是编译的词法分析器的名称。我通过在 gdb 下运行它发现了“实际”路径(无可否认,这应该是我的第一直觉)。

gdb lexer
(gdb) run < INPUT.txt

最初,我试图运行它:

lexer < INPUT.txt

但是我通过使用 gdb 运行它发现它有效:

/nethome/users/mjc7w6/Classes/lexer < INPUT.txt

编辑:有人在我的 Facebook 上提出进一步改进。如果上述解决方案为您解决了问题,您可能需要使用以下内容编辑 ~/.bashrc:

export PATH=/nethome/users/mjc7w6/Classes:$PATH

或者您发现要设置的路径。

关于c++ - “过早的 EOF”和 'Bad Character' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com