• Home
  • Blog
  • Syntax analyzer. You may use any top-down parser such as a RDP.

Syntax analyzer. You may use any top-down parser such as a RDP.

0 comments

The assignment is to write a syntax analyzer.(base on project#1)

You may use any top-down parser such as a RDP,

a predictive recursive descent parser or a table driven predictive parser.

Hence, your assignment consists of the following tasks:

  • Rewrite the grammar Rat20SU to remove any left recursion

(Also, use left factorization if necessary)

2. Use the lexer() generated in the assignment 1 to get the tokens

3. The parser should print to an output file the tokens, lexemes and

the production rulesused;

That is, first, write the token and lexeme found

Then, print out all productions rules used for analyzing this token

Note:- a simple way to do it is to have a “print statement” at the beginning of each function that will print

the production rule.

– It would be a good idea to have a “switch” with the “print statement” so that you can turn it on or off.

4. Error handling: if a syntax error occurs, your parser should generate a meaningful error message, such as token, lexeme, line number, and error type etc.

Then, your program may exit or you may continue for further analysis.

The bottom line is that your program must be able to parse the entire program if it is syntactically correct.

5. Turn in your assignment according to the specifications given in the project outline

Example

Assume we have the following statement

….more ….

a = b + c;

…. more ….

One possible output would be as follows:

…. more….

Token: IdentifierLexeme: a

<Statement> -> <Assign>

<Assign> -><Identifier>= <Expression> ;

Token: OperatorLexeme: =

Token: IdentifierLexeme: b

<Expression> -> <Term> <Expression Prime>

<Term> -> <Factor> <Term Prime>

<Factor> -> <Identifier>

Token:OperatorLexeme: +

<Term Prime> -> e

<Expression Prime> -> + <Term> <Expression Prime>

Token:IdentifierLexeme: c

<Term>-> <Factor> <Term Prime>

<Factor> -> <Identifier>

Token: SeparatorLexeme: ;

<Term Prime> -> e

<Expression Prime> -> e

…. more…..

About the Author

Follow me


{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}