'Pre-mature EOF'和'Bad Character'错误
'Pre-mature EOF' and 'Bad Character' errors
我在以前的类中写过Flex的东西,但我以前工作的代码都没有解决我遇到的问题。
我在StackOverflow周围搜索了一个解决方案,但他们都没有解决
我有:
- 选中我在%{…%}区域中没有错误的空格
- 尝试使用#include<'iostream>
- 已尝试%选项noywrap
这是我的代码(我删除了所有的代币,因为有很多):
%{
...
int numLines = 0;
void printTokenInfo(char* tokenType, char* lexeme);
void handleComments(char* text);
%}
WSPACE [ tr]+
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: %sn", tokenType, lexeme);
}
void handleComments(char* text)
{
printf("%sn", 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"或"不良字符"而失败
有什么想法吗?
好吧,我想我终于找到了答案。。。试着使用完整的路径运行它,而不仅仅是使用编译的lexer的名称。我通过在gdb下运行它发现了"实际"路径(诚然,这应该是我的第一直觉)。
gdb lexer
(gdb) run < INPUT.txt
最初,我试图用运行它
lexer < INPUT.txt
但我通过用gdb运行它发现这是有效的:
/nethome/users/mjc7w6/Classes/lexer < INPUT.txt
编辑:有人在我的脸书上插话说我有了进一步的改进。如果上面的解决方案为您修复了它,您可能需要用以下内容编辑您的~/.bashrc:
export PATH=/nethome/users/mjc7w6/Classes:$PATH
或者,不管你发现这条路是怎么走的。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 新的 C++14 位分隔符处"Bad Character" Eclipse Oxygen 错误
- 编译器错误"character constant too long for its type" 。怎么了?
- 'Pre-mature EOF'和'Bad Character'错误
- 为什么我收到此代码的"unknown escape character"错误
- 使用 C++11 时出现错误"Error: stray character"