CMSC 430 Project 1 The first project involves modifying the attached lexical analyzer and the compilation listing generator code. You need to make the following modifications to the lexical analyzer,...

1 answer below »
I have attached the project and attached documents Please let me know if any more information is needed.


CMSC 430 Project 1 The first project involves modifying the attached lexical analyzer and the compilation listing generator code. You need to make the following modifications to the lexical analyzer, scanner.l: 1. A new token ARROW should be added for the two character punctuation symbol =>. 2. The following reserved words should be added: case, else, endcase, endif, if, others, real, then, when Each reserved words should be a separate token. The token name should be the same as the lexeme, but in all upper case. 3. Two additional logical operators should be added. The lexeme for the first should be or and its token should be OROP. The second logical operator added should be not and its token should be NOTOP. 4. Five relational operators should be added. They are =, /=, >, >= and <=. all="" of="" the="" lexemes="" should="" be="" represented="" by="" the="" single="" token="" relop.="" 5.="" one="" additional="" lexeme="" should="" be="" added="" for="" the="" addop="" token.="" it="" is="" binary="" -.="" 6.="" one="" additional="" lexeme="" should="" be="" added="" for="" the="" mulop="" token.="" it="" is/.="" 7.="" a="" new="" token="" remop="" should="" be="" added="" for="" the="" remainder="" operator.="" its="" lexeme="" should="" be="" rem.="" 8.="" a="" new="" token="" expop="" should="" be="" added="" for="" the="" exponentiation="" operator.="" its="" lexeme="" should="" be="" **.="" 9.="" a="" second="" type="" of="" comment="" should="" be="" added="" that="" begins="" with="" and="" ends="" with="" the="" end="" of="" line.="" as="" with="" the="" existing="" comment,="" no="" token="" should="" be="" returned.="" 10.="" the="" definition="" for="" the="" identifiers="" should="" be="" modified="" so="" that="" underscores="" can="" be="" included,="" however,="" consecutive="" underscores,="" leading="" and="" trailing="" underscores="" should="" not="" be="" permitted.="" 11.="" a="" real="" literal="" token="" should="" be="" added.="" it="" should="" begin="" with="" a="" sequence="" of="" one="" or="" more="" digits="" following="" by="" a="" decimal="" point="" followed="" by="" zero="" or="" more="" additional="" digits.="" it="" may="" optionally="" end="" with="" an="" exponent.="" if="" present,="" the="" exponent="" should="" begin="" with="" an="" e="" or="" e,="" followed="" by="" an="" optional="" plus="" or="" minus="" sign="" followed="" by="" one="" or="" more="" digits.="" the="" token="" should="" be="" named="" real_literal.="" 12.="" a="" boolean="" literal="" token="" should="" be="" added.="" it="" should="" have="" two="" lexemes,="" which="" are="" true="" and="" false.="" the="" token="" should="" be="" named="" bool_literal.="" you="" must="" also="" modify="" the="" header="" file="" tokens.h="" to="" include="" each="" the="" new="" tokens="" mentioned="" above.="" the="" compilation="" listing="" generator="" code="" should="" be="" modified="" as="" follows:="" 1.="" the="" lastline="" function="" should="" be="" modified="" to="" compute="" the="" total="" number="" of="" errors.="" if="" any="" errors="" occurred="" the="" number="" of="" lexical,="" syntactic="" and="" semantic="" errors="" should="" be="" displayed.="" if="" no="" errors="" occurred,="" it="" should="" display="" compiled="" successfully.="" it="" should="" return="" the="" total="" number="" of="" errors.="" 2.="" the="" appenderror="" function="" should="" be="" modified="" to="" count="" the="" number="" of="" lexical,="" syntactic="" and="" semantic="" errors.="" the="" error="" message="" passed="" to="" it="" should="" be="" added="" to="" a="" queue="" of="" messages="" that="" occurred="" on="" that="" line.="" 3.="" the="" displayerrors="" function="" should="" be="" modified="" to="" display="" all="" the="" error="" messages="" that="" have="" occurred="" on="" the="" previous="" line="" and="" then="" clear="" the="" queue="" of="" messages.="" an="" example="" of="" the="" output="" of="" a="" program="" with="" no="" lexical="" errors="" is="" shown="" below:="" 1="" (*="" program="" with="" no="" errors="" *)="" 2="" 3="" function="" test1="" returns="" boolean;="" 4="" begin="" 5="" 7="" +="" 2=""> 6 and 8 = 5 * (7 - 4); 6 end; Compiled Successfully Here is the required output for a program that contains more than one lexical error on the same line: 1 -- Function with two lexical errors 2 3 function test2 returns integer; 4 begin 5 7 $ 2 ^ (2 + 4); Lexical Error, Invalid Character $ Lexical Error, Invalid Character ^ 6 end; Lexical Errors 2 Syntax Errors 0 Semantic Errors 0 You are to submit two files. 1. The first is a .zip file that contains all the source code for the project. The .zip file should contain the flex input file, which should be a .l file, all .cc and .h files and a makefile that builds the project. 2. The second is a Word document (PDF or RTF is also acceptable) that contains the documentation for the project, which should include the following: a. A discussion of how you approached the project b. A test plan that includes test cases that you have created indicating what aspects of the program each one is testing and a screen shot of your compiler run on that test case c. A discussion of lessons learned from the project and any improvements that could be made Grading Rubric Criteria Meets Does Not Meet Functionality 70 points 0 points Defines new comment lexeme (5) Does not define new comment lexeme (0) Correctly modifies identifier definition to include underscores (5) Does not correctly modify identifier definition to include underscores (0) Adds real and Boolean tokens (5) Does not add real and Boolean tokens (0) Defines additional logical operators (5) Does not define additional logical operators (0) Defines additional relational operators (5) Does not define additional relational operators (0) Defines additional arithmetic operators (5) Does not define additional arithmetic operators (0) Defines additional reserved words and arrow symbol(5) Does not define additional reserved words and arrow symbol (0) Adds new tokens to the token header file (5) Does not add new tokens to the token header file (0) Implements modifications to display multiple errors on the same line (15) Does not implement modifications to display multiple errors on the same line (0) Implements modifications to count and display each type of compilation error (15) Does not Implement modifications to count and display each type of compilation error (0) Test Cases 15 points 0 points Includes test case containing all lexemes (5) Does not include test case containing all lexemes (0) Includes test case with multiple errors on one line (5) Does not include test case with multiple errors on one line (0) Includes test case with no errors (5) Does not include test case with no errors (0) Documentation 15 points 0 points Discussion of approach included (5) Discussion of approach not included (0) Lessons learned included (5) Lessons learned not included (0) Comment blocks with student name, project, date and code description included in each file (5) Comment blocks with student name, project, date and code description not included in each file (0)
Answered 3 days AfterJan 11, 2022

Answer To: CMSC 430 Project 1 The first project involves modifying the attached lexical analyzer and the...

Karthi answered on Jan 15 2022
105 Votes
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here