5.14 Programming Project for Chapter 5

Define a function evaluate-expression that accepts only a list argument, which represents a logical expression; applies the logical operators in the input expression; and returns a list of all intermediate results, including the final return value of the expression, which can be either #t or #f.

The expressions are represented as a parenthesized combination of #t (representing true), #f (representing false), ∼ (representing not), V (representing or), and & (representing and). In the absence of parentheses, normal precedence rules hold: ∼ has the highest precedence, & has the second highest, and V has the lowest. Assume left-to-right associativity. For instance, the expression Left parenthesis, hash f V hash t ampersand hash f V, left parenthesis, tilde hash t, right parenthesis, right parenthesis. is equivalent to Left parenthesis, left parenthesis, hash f V, left parenthesis, t ampersand hash f, left parenthesis, left parenthesis, V, left parenthesis, tilde hash t, right parenthesis, right parenthesis.. No two operators can appear in succession and the ~ will always be enclosed in parentheses. All input expressions will be valid.

Examples:

A set of 17 code lines in Scheme with the evaluate dash expression function.
Description
Continuation of the code in Scheme with the evaluate dash expression function consisting of 42 lines.
Description

You may define one or more helper functions. Keep your program to approximately 120 lines of code. Use of the pattern-matching facility in Racket will significantly reduce the size of the evaluator to approximately 30 lines of code. See https://docs.racket-lang.org/guide/match.html for the details of pattern matching in Racket. (Try building a graphical user interface for this expression evaluator in Racket; see https://docs.racket-lang.org/gui/.)

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.24.124