import json def load_bimmypp(filename ) : with open(filename) as infile: return json.load(infile) def validate(bpp): "" "Returns True if this is a valid bimmypp program, or if it finds a problem, raises a ValueError.""" # If we get passed an int, it's OK! # If it's a list, you must check... # Is it of length 3? # Assuming it's of length 3, is the first thing in the list one of # "add", "sub", "mul", or "div"? # If those aren't true, raise a ValueError. # Finally, you have to run validate (recursively) on the left operand and # right operand. (so things at index 1 and 2 in the list) # If it's anything else other than an int or a list, raise a ValueError. pass def evaluate(bpp): "" "Evaluate a bpp expression. Returns the result of evaluating the program. Might also raise a ValueError, if we end up dividing by 0. # If we get passed an int, then that's it! Just return the int value. # If we get passed a list, then we have to evaluate the expression. # Get the operator out of the list (at the 0 index). # RECURSIVELY EVALUATE the operands. # If the operator is "add", then add the two operands! # Likewise for sub and mul. # If we're doing division, we must check for 0. # If the right operator is 0, then raise a ValueError with the message # "divide by zero". # Assuming everything worked, return the result! pass def run_bimmypp(filename): """Function for running a bimmypp program. Takes a filename and executes the file. You don't have to make any changes to this function.""" try: bpp = load_bimmypp(filename) except json.decoder.JSONDecodeError: print("Could not load bimmypp file") return None except FileNotFoundError: print ("no such file: ", filename) return None try: valid = validate(bpp) except ValueError as e: print(e) return None try: value = evaluate(bpp) print("Success!") print("we got:", value) return value except ValueError as e: print(e) return None
import json def load_bimmypp(filename ) : with open(filename) as infile: return json.load(infile) def validate(bpp): "" "Returns True if this is a valid bimmypp program, or if it finds a problem, raises a ValueError.""" # If we get passed an int, it's OK! # If it's a list, you must check... # Is it of length 3? # Assuming it's of length 3, is the first thing in the list one of # "add", "sub", "mul", or "div"? # If those aren't true, raise a ValueError. # Finally, you have to run validate (recursively) on the left operand and # right operand. (so things at index 1 and 2 in the list) # If it's anything else other than an int or a list, raise a ValueError. pass def evaluate(bpp): "" "Evaluate a bpp expression. Returns the result of evaluating the program. Might also raise a ValueError, if we end up dividing by 0. # If we get passed an int, then that's it! Just return the int value. # If we get passed a list, then we have to evaluate the expression. # Get the operator out of the list (at the 0 index). # RECURSIVELY EVALUATE the operands. # If the operator is "add", then add the two operands! # Likewise for sub and mul. # If we're doing division, we must check for 0. # If the right operator is 0, then raise a ValueError with the message # "divide by zero". # Assuming everything worked, return the result! pass def run_bimmypp(filename): """Function for running a bimmypp program. Takes a filename and executes the file. You don't have to make any changes to this function.""" try: bpp = load_bimmypp(filename) except json.decoder.JSONDecodeError: print("Could not load bimmypp file") return None except FileNotFoundError: print ("no such file: ", filename) return None try: valid = validate(bpp) except ValueError as e: print(e) return None try: value = evaluate(bpp) print("Success!") print("we got:", value) return value except ValueError as e: print(e) return None
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
Expert Solution
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
Step by step
Solved in 2 steps
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