Pearson eText for Concepts of Programming Languages -- Instant Access (Pearson+)
Pearson eText for Concepts of Programming Languages -- Instant Access (Pearson+)
12th Edition
ISBN: 9780135102268
Author: Robert Sebesta
Publisher: PEARSON+
Expert Solution & Answer
Book Icon
Chapter 3, Problem 9PS

Explanation of Solution

Consider the following grammar in BNF:

<assign> -> <id> = <expr>

<id> —> A|B|C

<expr> -> <expr> + <term> | <term>

<term> -> <term> * <factor> | <factor>

<factor> -> (<expr>)| <id >

The grammar of Example 3.4 to add a unary minus operator that has higher precedence than either + or * are as follows:

<assign> -> <id> = <expr>

<id> —> A|B|C

<expr> -> <expr> + <term> | <term>

<term> -> <term> * <factor> | <factor>

...

Blurred answer
Students have asked these similar questions
Write a GO grammar expression where: 1. An expression is either an id (you may assume this token has been defined) or a combination of subexpressions using the **, ^ and $ operators  2. ** is a binary infix operator, while ^ is a unary operator that appears before an expression and $ is an operator that appears after an expression  3. ^ has precedence over **, which has precedence over $  4. ** has right-associativity
1. Use the algorithm described in class that takes a CFG and converts it into a CNF (Chomsky Normal Form) grammar that generates the same language as the original grammar, except possibly for the string A, to answer the following question. As part of your answer, you should say which variables are nullable, and you should give the appropriate grammar after each step of the algorithm. There are four steps. Give a CFG (context-free grammar) in CNF (Chomsky Normal Form) that generates the same language, except possibly for the string A, as the following grammar: SAB AB →bAa A → aaB bb
Use the grammar you have created in Question 1 for an infix expression and using the technique: Syntax Directed Definition write appropriate semantic rules to convert an infixexpression of that grammar to a prefix expression.Precedence of operators are given below (high to low): ()*, / +, - =Associativity of operators are given below:+, , *, / [Left Associative]= [Right Associative]Taking into account the precedence and the associativity of the operators in this question, if any modification is needed for your grammar in Question 1 to be used in this question, do it. After the necessary modification(s), a) write the semantic rules for infix to prefix conversionb) draw the annotated parse tree for the string: a=b/(c–d)*(x+y)
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