Programming Language Pragmatics, Fourth Edition
Programming Language Pragmatics, Fourth Edition
4th Edition
ISBN: 9780124104099
Author: Michael L. Scott
Publisher: Elsevier Science
Expert Solution & Answer
Book Icon
Chapter 2, Problem 18E

Explanation of Solution

a.

FIRST (Es):

  • In production rule, the FIRST set is applied to the right-hand side (RHS), and tells all the terminal symbols which can start sentences derived from that RHS.
  • The definition of FIRST set is FIRST (x) = {x}, here “x” is terminal symbol.
  • For any non-terminal “X” with production rules Xx1|x2|...|xn,FIRST(X)=FIRST(x1)FIRST(x2)...FIRST(xn)
  • The FIRST (Es) for the given LL (1) grammar is as follows:

    FIRST (Es) = {atom, (, ’, ε}.

    In the grammar, “atom”, “(“, “’”, “ε” is the first right-hand side. So it is considered as FIRST (Es).

FOLLOW (E) in the given grammar:

  • FOLLOW set is used when the current non-terminal can derive.
    • S is the start symbol, so one can use FOLLOW(S) to start the FOLLOW grammar

Explanation of Solution

b.

Parse tree:

A parse tree for the given string (cdr ’ (a b c) ) $$ is ...

Explanation of Solution

c.

Left-most derivation:

The left-most derivation of (cdr ’ (a b c)) $$ is as follows:

 E_ $$ ( E_ Es ) $$ ( cdr Es_ ) $$ ( cdr E_ Es ) $$

    ( cdr ' E_ Es ) $$( cdr ' (E_ Es) Es ) $$( cdr ' (Es_) Es )

Explanation of Solution

d.

Table-driven top-down parse of the string (cdr ’ (a b c)):

Parse stackInput streamComment
P(cdr ’ (a b c)) $$ 
E$$(cdr ’ (a b c)) $$Predict P → E $$
( E Es ) $$(cdr ’ (a b c)) $$Predict E → ( E Es )
E Es ) $$cdr ’ (a b c)) $$Match (
atom Es ) $$cdr ’ (a b c)) $$Predict E → atom
Es ) $$’ (a b c)) $$Match atom
E Es ) $$’ (a b c)) $$Predict Es →E Es
’ E Es ) $$’ (a b c)) $$Predict E → ’ E
E Es ) $$(a b c)) $$Match ’
( E Es ) Es ) $$(a b c)) $$

Explanation of Solution

e.

Decent tree for “’”:

  • The given string is (cdr ’ (a b c)), here “’” is matched in a recursive descent pa...

Blurred answer
Students have asked these similar questions
I need to develop and run a program that prompts the user to enter a positive integer n, and then calculate the value of n factorial n! = multiplication of all integers between 1 and n, and print the value n! on the screen. This is for C*.
I need to develop and run a C* program to sum up integers from 1 to 100, and print out the sum value on the screen. Can someone help please?
Given the schema below for the widgetshop, provide a schema diagram. Schema name Attributes Widget-schema Customer-schema (stocknum, manufacturer, description, weight, price, inventory) (custnum, name, address) Purchased-schema (custnum, stocknum, pdate) Requestedby-schema (stocknum, custnum) Newitem-schema (stocknum, manufacturer, description) Employee-schema (ssn, name, address, salary) You can remove the Newitem-schema (red).
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education