EXAMPLE 3.6 An Attribute Grammar for Simple Assignment Statements 1. Syntax rule: → = Semantic rule: .expected_type ← .actual_type 2. Syntax rule: → [2] + [3] Semantic rule: .actual_type ← if ([2].actual_type = int) and ([3].actual_type = int) then int else real end if Predicate: .actual_type == .expected_type 3. Syntax rule: → Semantic rule: .actual_type ← .actual_type Predicate: .actual_type .expected_type == 4. Syntax rule: → A|B|C Semantic rule: .actual_type ← look-up (.string) The look-up function looks up a given variable name in the symbol table ar returns the variable's type.
EXAMPLE 3.6 An Attribute Grammar for Simple Assignment Statements 1. Syntax rule: → = Semantic rule: .expected_type ← .actual_type 2. Syntax rule: → [2] + [3] Semantic rule: .actual_type ← if ([2].actual_type = int) and ([3].actual_type = int) then int else real end if Predicate: .actual_type == .expected_type 3. Syntax rule: → Semantic rule: .actual_type ← .actual_type Predicate: .actual_type .expected_type == 4. Syntax rule: → A|B|C Semantic rule: .actual_type ← look-up (.string) The look-up function looks up a given variable name in the symbol table ar returns the variable's type.
Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
Related questions
Question
Write an attribute grammar whose BNF basis is that of Example 3.6 in
Section 3.4.5 but whose language rules are as follows: Data types cannot
be mixed in expressions, but assignment statements need not have the
same types on both sides of the assignment operator.
Example 3.6 is attached
![EXAMPLE 3.6
An Attribute Grammar for Simple Assignment Statements
1. Syntax rule: <assign> → <var> = <expr>
Semantic rule: <expr>.expected_type ← <var>.actual_type
2. Syntax rule: <expr> → <var>[2] + <var>[3]
Semantic rule: <expr>.actual_type ←
if (<var>[2].actual_type = int) and
(<var>[3].actual_type = int)
then int
else real
end if
Predicate:
<expr>.actual_type
<expr>.expected_type
3. Syntax rule:
<expr> → <var>
Semantic rule: <expr>.actual_type ← <var>.actual_type
Predicate:
<expr>.actual_type
<expr>.expected_type
==
==
4. Syntax rule: <var> → A | B | C
Semantic rule: <var>.actual_type ← look-up (<var>.string)
The look-up function looks up a given variable name in the symbol table and
returns the variable's type.](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2Fd38774d4-f9f4-40ae-a842-e50e2367e74a%2F8325a6ec-8651-4b4d-bea8-c4aeb70d07c3%2F5xq4wc_processed.png&w=3840&q=75)
Transcribed Image Text:EXAMPLE 3.6
An Attribute Grammar for Simple Assignment Statements
1. Syntax rule: <assign> → <var> = <expr>
Semantic rule: <expr>.expected_type ← <var>.actual_type
2. Syntax rule: <expr> → <var>[2] + <var>[3]
Semantic rule: <expr>.actual_type ←
if (<var>[2].actual_type = int) and
(<var>[3].actual_type = int)
then int
else real
end if
Predicate:
<expr>.actual_type
<expr>.expected_type
3. Syntax rule:
<expr> → <var>
Semantic rule: <expr>.actual_type ← <var>.actual_type
Predicate:
<expr>.actual_type
<expr>.expected_type
==
==
4. Syntax rule: <var> → A | B | C
Semantic rule: <var>.actual_type ← look-up (<var>.string)
The look-up function looks up a given variable name in the symbol table and
returns the variable's type.
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution!
Trending now
This is a popular solution!
Step by step
Solved in 2 steps

Follow-up Questions
Read through expert solutions to related follow-up questions below.
Follow-up Question
hello ,
I don't understand how the new grammar you provided prevents mixing up the data types in the expressions . I think the answer should be in modifying the IF-Statement ?
Solution
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Recommended textbooks for you

Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON

Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON

C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON

Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning

Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education