Question: LEX.H FILE /* * lex.h * * CS280 * Fall 2020 */ #ifndef LEX_H_ #define LEX_H_ #include #include #include using namespace std; //Definition of all

LEX.H FILE
/* * lex.h * * CS280 * Fall 2020 */
#ifndef LEX_H_ #define LEX_H_
#include
using namespace std;
//Definition of all the possible token types enum Token { // keywords PROGRAM, PRINT, READ, INTEGER, END, IF, THEN, REAL, CHAR,
// an identifier IDENT,
// an integer and string constant ICONST, RCONST, SCONST,
// the operators, parens, semicolon PLUS, MINUS, MULT, DIV, ASSOP, LPAREN, RPAREN, COMA, EQUAL, LTHAN, CONCAT, COLON, // any error returns this token ERR,
// when completed (EOF), return this token DONE };
static map
{ IDENT, "IDENT" },
{ ICONST, "ICONST" }, { RCONST, "RCONST" }, { SCONST, "SCONST" }, { PLUS, "PLUS" }, { MINUS, "MINUS" }, { MULT, "MULT" }, { DIV, "DIV" }, { ASSOP, "ASSOP" }, { LPAREN, "LPAREN" }, { RPAREN, "RPAREN" }, { COLON, "COLON" }, {COMA, "COMA" }, { EQUAL, "EQUAL" }, { LTHAN, "LTHAN" }, { CONCAT, "CONCAT" }, { ERR, "ERR" },
{ DONE, "DONE" }, };
static map
//Class definition of LexItem class LexItem { Token token; string lexeme; int lnum;
public: LexItem() { token = ERR; lnum = -1; } LexItem(Token token, string lexeme, int line) { this->token = token; this->lexeme = lexeme; this->lnum = line; }
bool operator==(const Token token) const { return this->token == token; } bool operator!=(const Token token) const { return this->token != token; }
Token GetToken() const { return token; } string GetLexeme() const { return lexeme; } int GetLinenum() const { return lnum; } };
extern ostream& operator
#endif /* LEX_H_ */
In this programming assignment, you will be building a lexical analyzer for small programming language and a program to test it. This assignment will be followed by two other assignments to build a parser and interpreter to the same language. You will write a lexical analyzer function, called getNextToken, and a driver program for testing it. The getNextToken function must have the following signature: Lexltem getNextToken (istream& in, int& linenumber); The first argument to getNextToken is a reference to an istream object that the function should read from. The second argument to getNextToken is a reference to an integer that contains the current line number. getNextToken should update this integer every time it reads a newline from the input stream. getNextToken returns a Lexltem object. A Lexltem is a class that contains a token, a string for the lexeme, and the line number as data members. A header file, lex.h, is provided for you. It contains a definition of the Lexitem class, and a definition of an enumerated type of token symbols, called Token. You MUST use the header file that is provided. You may NOT change it. It is recommended to implement the lexical analyzer in one source file, and the main test program in another source file. The testing program is a main() function that takes several command line flags
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
