Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

THIS PROGRAM MUST BE LIKE IN THE PHOTO I ASKED YOU 3 TIMES AND YOU DIDNT GIVE ME TRUE ANSWER. THIS PROGRAMS DO NOTHING PLEASE

THIS PROGRAM MUST BE LIKE IN THE PHOTO I ASKED YOU 3 TIMES AND YOU DIDNT GIVE ME TRUE ANSWER. THIS PROGRAMS DO NOTHING PLEASE HELP ME AND ADD 3RD OPTION TO THE MENU WHICH IS SYMBOL TABLE. . PLEASE ANSWER IT CORRECT I WAS SO DISAPPOINTENT FOR YOUR ANSWERS. PLEASE DO IT CORRECT. PROGRAM MUST BE WRITTEN IN THE VISUAL STUDIO

#include

#include

#include

#include

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

cin >> fileName;

int choice;

//do while loop

do

{

cout

cout

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 == '}')

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

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

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

return;

}

char *ch = (char*)malloc(sizeof(char) * 20);

int j = 0;

while (!inputFile.eof())

{

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

if (IsIdentifier(ch))

{

cout

}

else if (isFloat(ch))

{

cout

}

else if (ch == "

{

cout

}

else if (ch == ">")

{

cout

}

else if (ch == "

{

cout

}

else if (ch == ">=")

{

cout

}

else if (ch == "==")

{

cout

}

else

{

cout

}

//call seekg on inputFile object

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

}

inputFile.close();

}image text in transcribed?

The Task You will write a lexical analyzer in C++ or C# that recognizes integers, floating point numbers, identifiers, and relational operators <.>.-.--. Examples of integers are 34,-322, 0, Examples of floating point numbers are 3.243, 0.003, -3.4 ctc. (no exponent notation required, such as 3.2E4). Examples of identifiers are sum, x123, big_size, A12R etc. Your lexical analyzer function should read the input from a file, and return a result. The main program should first read the name of the input file, and enter a loop, with the following menu being displayed: Call lex0 - Exit "Exit" should end the program. "Call lexO" should call the lexical analyzer to get the next token, as well as additional information, such as a pointer to the symbol table entry, as necessary. Spaces should be skipped in the input file. Identifiers should be placed by lex) in the symbol table the first time they are encountered. In case an unrecognized string is found, lex0 should return UNKNOWN The TOKENS that should be returned by the lexical analyzer are: INTEGER FLOAT ID . GT (for>) LT (for) LE (for . GE (for EQ (for UNKNOWN x 45 5.4 33 size 345abc y1234> The lexical analyzer should return the following results: ID,0 INTEGER,45 These results should be printed on the screen in the main loop of the program each time lex) is called

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Graph Databases

Authors: Ian Robinson, Jim Webber, Emil Eifrem

1st Edition

1449356265, 978-1449356262

More Books

Students also viewed these Databases questions