Lex 文本作业 作业目标:编写代码以一次一行地从文本文件中读取并打印每行一个字符以供词法分析器使用。设计: 1. 在 Blackboard 中下载与此作业一起提供的文件 Assignment1.cpp,并将其用于您的项目。2. Assignment1.cpp 文件是作业的代码。main 函数通过命令行参数接收要处理的文本文件的名称。main 函数包含一个循环来调用 getChar...







Lex 文本作业 作业目标:编写代码以一次一行地从文本文件中读取并打印每行一个字符以供词法分析器使用。


设计: 1. 在 Blackboard 中下载与此作业一起提供的文件 Assignment1.cpp,并将其用于您的项目。


2. Assignment1.cpp 文件是作业的代码。


main 函数通过命令行参数接收要处理的文本文件的名称。


main 函数包含一个循环来调用 getChar 函数来获取下一个字符并将其打印出来。


当函数 isEOF 返回 true 时循环终止。


您不能修改文件中的任何现有代码和主函数中的代码。


3. 实现函数代码:isEOF()、getChar()、


和 readNextLine(),通过使用全局变量 currentChar、currentCharIndex、sourceCodeFile 和 line 向这些函数添加必要的代码。


4、isEOF()函数在到达文本文件末尾时返回true;


否则,函数返回 false。


变量 sourceCodeFile 是文件指针,C++ iostream 库具有文件结束函数 eof()。


5. 调用 getChar() 函数将存储在字符串变量 line 中的当前行的下一个字符存储在 char 变量 currentChar 中。


int 变量 currentCharIndex 存储字符串行中 currentChar 字符的索引。


当此函数尝试获取行中最后一个字符(换行符)之后的下一个字符时,此方法将调用 readNextLine() 函数。


请记住,对于 currentChar 中的当前字符,


currentCharIndex 必须是该字符在字符串行中的索引。


此外,从字符串行中获取字符的方法是 line[currentCharIndex] 或 line.at(currentCharIndex)。


6. readNextLine() 方法只从文本文件中读取下一行并将该行存储在字符串变量 line 中,假设还有另一行要读取。


C++ iostream 库具有函数 getline(*sourceCodeFile, line) 以从文件中读取一行文本。


请记住,getline 函数在分配给变量 line 的字符串末尾不包含换行符。


7. 使用任何文本文件来测试您的代码。


程序输出是输入文本文件,与逐行看起来完全一样。


8. 我通过使用 g++ 编译器在 Linux 中编译来测试您的代码。


为我,


启动程序的命令(程序的可执行代码的名称是 a.out 并假设 test.txt 包含几行文本)是: a.out test.txt 9. 不要在代码中键入任何注释.




如果你的编程做得很好,那么我就很容易确定你的代码的任务。




























Feb 13, 2023
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here