You have to design a syntactic analyzer for the language

Assignment Help Theory of Computation
Reference no: EM13347675

You have to design a syntactic analyzer for the language specified by the grammar below. We are using the following convention: Terminals (lexical elements) are represented with the bold courier font like this. Non-terminals are represented in angle brackets <like this>. The character ε (epsilon) represents an empty stream. The non-terminal <prog> is the starting symbol of the grammar.

Grammar

<prog> ::= <classDecl>*<progBody>
<classDecl> ::= class id {<varDecl>*<funcDef>*};
<progBody> ::= program<funcBody>;<funcDef>*
<funcHead> ::= <type>id(<fParams>)
<funcDef> ::= <funcHead><funcBody>;
<funcBody> ::= {<varDecl>*<statement>*}
<varDecl> ::= <type>id<arraySize>*;
<statement> ::= <variable><assignOp><expr>;
| if(<expr>)then<statBlock>else<statBlock>;
| while(<expr>)do<statBlock>;
| read(<variable>);
| write(<expr>);
| return(<expr>);
<statBlock> ::= {<statement>*} | <statement> | ε
<expr> ::= <arithExpr> | <arithExpr><relOp><arithExpr>
<arithExpr> ::= <arithExpr><addOp><term> | <term>
<sign> ::= + | -
<term> ::= <term><multOp><factor> | <factor>
<factor> ::= <variable>
| <idnest>*id(<aParams>)
| num
| (<expr>)
| not<factor>
| <sign><factor>
<variable> ::= <idnest>*id<indice>*
<idnest> ::= id<indice>*.
<indice> ::= [<arithExpr>]
<arraySize> ::= [ int ]
<type> ::= integer | real | id
<fParams> ::= <type>id<arraySize>*<fParamsTail>* | ε
<aParams> ::= <expr><aParamsTail>* | ε
<fParamsTail> ::= ,<type>id<arraySize>*
<aParamsTail> ::= ,<expr>

Operators and additional lexical conventions

<assignOp> ::= =
<relOp> ::= == | <> | < | > | <= | >=
<AddOp> ::= + | - | or
<multOp> ::= * | / | and

id ::= follows specification for identifiers found in assignment#1
num ::= follows specification for numbers found in assignment#1
int ::= <nonZero><digit>*
<nonZero> ::= 1..9
<digit> ::= <nonZero> | 0

For example, the non-terminal <addOp> is a generalization of the addition operators tokens +, - and or. The use of this notation here does not necessarily imply that you have to define a new type of token in your lexical analyzer. Also, id and num are tokens that refer to the lexical conventions given in the first assignment. Note that a new lexical convention for the token int has been added.

Work to be done

• Analyze the syntactical definition given on the first page (and the additional lexical definition for the token int). Remove all the * notations and replace them by list-generating productions. List in your documentation all the ambiguities and left recursions, or any error you may find in the grammar. Modify the productions so that the left recursions and ambiguities are removed without modifying the language. You should obtain a set of productions that can be parsed using the top-down predictive parsing method. Include the transformed grammar in your documentation.

• Derive the FIRST and FOLLOW sets for each non-terminal in your transformed grammar and list them in your documentation.

• Implement a predictive parser (recursive descent or table-driven) for your modified set of grammar rules.

• Your parser should optionally output to a file the derivation that derives the source program from the starting symbol.

• The parser should call your lexical analyzer as developed in assignment 1 when it needs a new token.

• The parser should properly identify the errors in the input program and print a meaningful message to the user for each error encountered. The parser should implement an error recover method that permits to report all errors. The error messages should be informative on the nature of the errors, as well as the location of the errors in the input file.

• In this assignment, you only check the syntactic correctness of the program, i.e., check whether the source program can be parsed according to the grammar. Do not check the semantic correctness of the program in this assignment.

• Write a set of source files that enable to test the parser for all syntactical structures involved in the language. Include cases testing for a variety of different errors to demonstrate the accuracy of your error reporting and recovery.

Reference no: EM13347675

Questions Cloud

Question 1mega industries corporation has eighteen years of : question 1.mega industries corporation has eighteen years of a bond outstanding to maturity an 8.25 nominal coupon with
Investment management assignmentprepare a report : investment management assignmentprepare a report recommending the appropriate investment of aud3 million for a five
Question 1a whatnbsp was the neolithic revolutionnbsp : question 1a. whatnbsp was the neolithic revolution?nbsp describe carefully what basic changes caused this revolution
Problem 1 solve the following functions for x where x is a : problem 1. solve the following functions for x where x is a real number. leave your answers in exact form that is do
You have to design a syntactic analyzer for the language : you have to design a syntactic analyzer for the language specified by the grammar below. we are using the following
You are to design and fir filter where the filter : you are to design and fir filter where the filter coefficients are the following numbers 3323939therefore the
Problem 1 we can evaluate the target wacc for apex printing : problem 1. we can evaluate the target wacc for apex printing given these assumptionsbullweights of 40 debt and 60
Question 1 consider the functions f g and h all defined on : question 1 consider the functions f g and h all defined on the set 0 1 2 3 ... 12i write down the values of ghf8 and
Systems research and investigate novel ideas and : systems research and investigate novel ideas and applications.write a research report outlining the architecture and

Reviews

Write a Review

Theory of Computation Questions & Answers

  Create a program that reads integers

Create a program that reads integers in range 0 .. 9999. The event stops reading if -99 is entered. Your event should use Stack to store those numbers then it used Priority Queue to print out those numbers in ascending order.

  Use undecidability of allcfg to show problem is undecidable

Use undecidability of ALLCFG to illustrate that following problem is also undecidable: Given PDA M1 and FA M2, is L(M1) = L(M2)?

  If m is a dfa accepting language b

If M is a DFA accepting language B, then exchangeing the accept and reject states gives a new DFA accepting the complement of B. Does this work for an NFA, why?

  Redundant sequence identi cation

Redundant sequence identi cation

  Argue that the problem is np complete

Argue that the following prob is NP Complete. Given list of positive integers, u1,u2,...un (in binary representation) and asked if there is partition of this set into 3 subsets, each of which has same sum.

  Write first four strings in lexicographic enumeration

Consider the language L = L1 ∩ L2, where L1 = {ww^R : w ∈ {a, b}* and L2 = {a^n b*a^n: n ≥ 0}. Write the first four strings in the lexicographic enumeration of L?

  Explain declarative knowledge and procedural knowledge

Write some examples of declarative knowledge. Write some examples of procedural knowledge. Then, compare examples, highlighting the similarities & differences.

  Prepare a research strategy

A research strategy is a plan of action that gives direction to your efforts enabling you to conduct your research systemically rather than haphazardly.

  Each part of this problem that the eax register

Assume for each part of this problem that the EAX register contains 00 00 00 4F and the doubleword referenced by value contains FF FF FF 38. Determine whether each of the conditional jump statements causes a jump to dest.

  1using suffix trees give an algorithm to nd a longest

1.using suffix trees give an algorithm to nd a longest common substring shared among three input strings. s1 of length

  If l recognized by dfa then language left half is regular

We showed to prove that if L can be identified by DFA then the language left half(L) = {x ∈ ∑*|∃y xy ∈ L and |x| = |y|} is also regular; here |x| means length of x.

  How does the cell phone help children to communicate

How does the cell phone help children to communicate and are the parents usually encouraging their children to communicate by cell phone?

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd