Using PLY, write an interpreter for the language of "LISP expressions". A LISP expression is defined as follows: 1. A number (integer as well as fractional) is a LISP expression. 2. if E1 and E2 are LISP expressions then so are (+ E1 E2), (- E1 E2), (*E1 E2), and (/ E1 E2). 3. if L is a LIST expression (defined below) then (car L) is a LISP expression. 4. if B is a BOOLEAN expression and E1 and E2 are LISP expressions then (if BE1 E2) is a LISP expression. A LIST Expression is defined as follows: 1. if E1, E2, ., En are LISP expressions where n>=0 then (E1 E2 . En) is a LIST expression. 2. if L is a LIST expression then (cdr L) is a LIST expression. 3. if E is a LISP expression and L is a LIST expression then (cons E L) is a LIST expression. ABOOLEAN expression is defined as follows: 1. True and False are BOOLEAN expressions. 2. if E1 and E2 are LISP expressions then (> E1 E2), (>= E1 E2), (< E1 E2), (<=E1 E2), (= E1 E2), and (<> E1 E2) are BOOLEA expressions. 3. if B1 and B2 are BOOLEAN expressions then so are (not B1), (and B1 B2), and (or B1 B2). Here are examples of valid LISP expressions: 34 True (20 30 40) (+ 20 30) (* (+ 1 2) (/ 8 4)) (* (car (2 4 (+ 2 4) 8)) (/ 27 9)) (+ (car (2 3 4)) (car (cdr (cdr (9 8 7 6))))) (if (> 2 3) 40 50) (and (> 2 3) (> 3 2)) (cdr (cons (+ 2 3) (4 5 6)))

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
icon
Related questions
Question

Please  I need the Ply parser

Thank you.

Using PLY, write an interpreter for the language of "LISP expressions".
ALISP expression is defined as follows:
1. A number (integer as well as fractional) is a LISP expression.
2. if E1 and E2 are LISP expressions then so are (+ E1 E2), (- E1 E2), (*E1 E2), and (/ E1 E2).
3. if L is a LIST expression (defined below) then (car L) is a LISP expression.
4. if B is a BOOLEAN expression and E1 and E2 are LISP expressions then (if B E1 E2) is a LISP expression.
ALIST Expression is defined as follows:
1. if E1, E2, ., En are LISP expressions where n>=0 then (E1 E2 . En) is a LIST expression.
2. if L is a LIST expression then (cdr L) is a LIST expression.
3. if E is a LISP expression and L is a LIST expression then (cons E L) is a LIST expression.
A BOOLEAN expression is defined as follows:
1. True and False are BOOLEAN expressions.
2. if E1 and E2 are LISP expressions then (> E1 E2), (>= E1 E2), (<E1 E2), (<= E1 E2), (= E1 E2), and (<> E1 E2) are BOOLEAN
expressions.
3. if B1 and B2 are BOOLEAN expressions then so are (not B1), (and B1 B2), and (or B1 B2).
Here are examples of valid LISP expressions:
34
True
(20 30 40)
(+ 20 30)
(* (+ 1 2) (/ 8 4))
(* (car (2 4 (+ 2 4) 8)) (/ 27 9))
(+ (car (2 3 4)) (car (cdr (cdr (9 8 7 6)))))
(if (> 2 3) 40 50)
(and (> 2 3) (> 3 2))
(cdr (cons (+ 2 3) (4 5 6)))
Transcribed Image Text:Using PLY, write an interpreter for the language of "LISP expressions". ALISP expression is defined as follows: 1. A number (integer as well as fractional) is a LISP expression. 2. if E1 and E2 are LISP expressions then so are (+ E1 E2), (- E1 E2), (*E1 E2), and (/ E1 E2). 3. if L is a LIST expression (defined below) then (car L) is a LISP expression. 4. if B is a BOOLEAN expression and E1 and E2 are LISP expressions then (if B E1 E2) is a LISP expression. ALIST Expression is defined as follows: 1. if E1, E2, ., En are LISP expressions where n>=0 then (E1 E2 . En) is a LIST expression. 2. if L is a LIST expression then (cdr L) is a LIST expression. 3. if E is a LISP expression and L is a LIST expression then (cons E L) is a LIST expression. A BOOLEAN expression is defined as follows: 1. True and False are BOOLEAN expressions. 2. if E1 and E2 are LISP expressions then (> E1 E2), (>= E1 E2), (<E1 E2), (<= E1 E2), (= E1 E2), and (<> E1 E2) are BOOLEAN expressions. 3. if B1 and B2 are BOOLEAN expressions then so are (not B1), (and B1 B2), and (or B1 B2). Here are examples of valid LISP expressions: 34 True (20 30 40) (+ 20 30) (* (+ 1 2) (/ 8 4)) (* (car (2 4 (+ 2 4) 8)) (/ 27 9)) (+ (car (2 3 4)) (car (cdr (cdr (9 8 7 6))))) (if (> 2 3) 40 50) (and (> 2 3) (> 3 2)) (cdr (cons (+ 2 3) (4 5 6)))
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Fibonacci algorithm
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.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
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)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education