Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

#include <iostream> #include <fstream> #include <stdbool.h> #include<string.h> u

ID: 3699219 • Letter: #

Question

#include <iostream>

#include <fstream>

#include <stdbool.h>

#include<string.h>

using namespace std;

bool isDelimiter(char ch)

{

if (ch == ' ' || ch == '+' || ch == '-' || ch == '*' ||

ch == '/' || ch == ',' || ch == ';' || ch == '>' ||

ch == '<' || ch == '=' || ch == '(' || ch == ')' ||

ch == '[' || ch == ']' || ch == '{' || ch == '}')

return (true);

return (false);

}

bool IsIdentifier(char* str)

{

if (str[0] == '0' || str[0] == '1' || str[0] == '2' ||

str[0] == '3' || str[0] == '4' || str[0] == '5' ||

str[0] == '6' || str[0] == '7' || str[0] == '8' ||

str[0] == '9' || isDelimiter(str[0]) == true)

return (false);

return (true);

}

bool isFloat(char* str)

{

int i, len = strlen(str);

bool hasDecimal = false;

if (len == 0)

return (false);

for (i = 0; i < len; i++) {

if (str[i] != '0' && str[i] != '1' && str[i] != '2'

&& str[i] != '3' && str[i] != '4' && str[i] != '5'

&& str[i] != '6' && str[i] != '7' && str[i] != '8'

&& str[i] != '9' && str[i] != '.' ||

(str[i] == '-' && i > 0))

return (false);

if (str[i] == '.')

hasDecimal = true;

}

return (hasDecimal);

}

bool isInteger(char* str)

{

int i, len = strlen(str);

if (len == 0)

return (false);

for (i = 0; i < len; i++) {

if (str[i] != '0' && str[i] != '1' && str[i] != '2'

&& str[i] != '3' && str[i] != '4' && str[i] != '5'

&& str[i] != '6' && str[i] != '7' && str[i] != '8'

&& str[i] != '9' || (str[i] == '-' && i > 0))

return (false);

}

return (true);

}

void lex(char *fileName)

{

fstream inputFile(fileName, ios::in);

if (!inputFile) {

cout << "Cannot open input file. ";

return;

}

char *ch;

int j = 0;

while (!inputFile.eof())

{

inputFile.get(ch, 20, ' ');

if (IsIdentifier(ch))

{

cout << "<ID," << j << "> ";

j++;

}

else if (isInteger(ch))

{

cout << "<INTEGER," << ch << "> ";

}

else if (isFloat(ch))

{

cout << "<FLOAT, " << ch << "> ";

}

else if (ch == "<")

{

cout << "<LT, "nothing"> ";

}

else if (ch == ">")

{

cout << "<GT, "nothing"> ";

}

else if (ch == "<=")

{

cout << "<LE, "nothing"> ";

}

else if (ch == ">=")

{

cout << "<GE, "nothing"> ";

}

else if (ch == "==")

{

cout << "<GE, "nothing"> ";

}

else

{

cout << "<Unknown, "" << ch << "">";

}

seekg(1 * sizeof(char), ios::cur);

}

inputFile.close();

}

int main()

{

char* fileName;

cout << "Enter File Name";

cin >> fileName;

int choice;

do{

cout << "1. lex()" << endl;

cout << "2. Exit()" << endl;

cin >> choice;

if (choice == 1)

{

lex();

}

} while (choice == 1);

return 0;

CAN YOU CORRECT FOR ME I CANT RUN IT ON VISUAL STUDIO IT GIVES FOLLOWING ERRORS

?TS EMERGENCY PLEASE HELP ME

THE PROGRAM IS ABOUT LEXICAL ANALYZER

Error List 0 Warnings 0Messages Search Emor List File ColumnProject Description ? 4 Intellisense too few arguments in function call 3 IntelliSense identifier seekg" is undefined 1 e C3861: 'seekg: identifier not found Line 138 119 Project15 Project15 Project15 Project15 ?2 emor C2660.lex' : function does not take 0 arguments ource.cpp

Explanation / Answer


//main.cpp
//include header files
#include <iostream>
#include <fstream>
#include<string.h>
using namespace std;
//function prototypes
bool isDelimiter(char ch);
bool IsIdentifier(char* str);
bool isFloat(char* str);
bool isInteger(char* str);
void lex(char *fileName);
//start of main function

int main()
{
   const int size=80;
   char fileName[size];

   /*Prompt for file name*/
   cout << "Enter File Name : ";
   cin>>fileName;

   int choice;

   //do while loop
   do
   {
       cout << "1. lex()" << endl;
       cout << "2. Exit()" << endl;
       cin >> choice;


       if (choice == 1)
           //call lex that takes fileName
           lex(fileName);

      

   } while (choice == 1);


   system("pause");
   return 0;
}

bool isDelimiter(char ch)
{
   if (ch == ' ' || ch == '+' || ch == '-' || ch == '*' ||
       ch == '/' || ch == ',' || ch == ';' || ch == '>' ||
       ch == '<' || ch == '=' || ch == '(' || ch == ')' ||
       ch == '[' || ch == ']' || ch == '{' || ch == '}')
       return (true);
   return (false);
}

bool IsIdentifier(char* str)
{
   if (str[0] == '0' || str[0] == '1' || str[0] == '2' ||
       str[0] == '3' || str[0] == '4' || str[0] == '5' ||
       str[0] == '6' || str[0] == '7' || str[0] == '8' ||
       str[0] == '9' || isDelimiter(str[0]) == true)
       return (false);
   return (true);
}

bool isFloat(char* str)
{
   int i, len = strlen(str);
   bool hasDecimal = false;

   if (len == 0)
       return (false);
   for (i = 0; i < len; i++) {
       if (str[i] != '0' && str[i] != '1' && str[i] != '2'
           && str[i] != '3' && str[i] != '4' && str[i] != '5'
           && str[i] != '6' && str[i] != '7' && str[i] != '8'
           && str[i] != '9' && str[i] != '.' ||
           (str[i] == '-' && i > 0))
           return (false);
       if (str[i] == '.')
           hasDecimal = true;
   }
   return (hasDecimal);
}

bool isInteger(char* str)
{
   int i, len = strlen(str);

   if (len == 0)
       return (false);
   for (i = 0; i < len; i++) {
       if (str[i] != '0' && str[i] != '1' && str[i] != '2'
           && str[i] != '3' && str[i] != '4' && str[i] != '5'
           && str[i] != '6' && str[i] != '7' && str[i] != '8'
           && str[i] != '9' || (str[i] == '-' && i > 0))
           return (false);
   }
   return (true);
}

void lex(char *fileName)
{
   fstream inputFile(fileName, ios::in);

   if (!inputFile) {
       cout << "Cannot open input file. ";
       return;
   }

   char *ch;
   int j = 0;

   while (!inputFile.eof())
   {

       inputFile.get(ch, 20, ' ');

       if (IsIdentifier(ch))
       {
           cout << "<ID," << j << "> ";
           j++;
       }
       else if (isInteger(ch))
       {
           cout << "<INTEGER," << ch << "> ";
       }
       else if (isFloat(ch))
       {
           cout << "<FLOAT, " << ch << "> ";
       }
       else if (ch == "<")
       {
           cout << "<LT, "nothing"> ";
       }
       else if (ch == ">")
       {
           cout << "<GT, "nothing"> ";
       }
       else if (ch == "<=")
       {
           cout << "<LE, "nothing"> ";
       }
       else if (ch == ">=")
       {
           cout << "<GE, "nothing"> ";
       }
       else if (ch == "==")
       {
           cout << "<GE, "nothing"> ";
       }
       else
       {
           cout << "<Unknown, "" << ch << "">";
       }

      //call seekg on inputFile object
       inputFile.seekg(1 * sizeof(char), ios::cur);

   }
   inputFile.close();
}

Note : Run the above file and enter your file name .