Skip to content

Chapter 4: Exercise 4.4 #915

@EmilyOng

Description

@EmilyOng

https://share.sourceacademy.org/81fek

Show how to implement && and || as derived components.

function make_conditional_expr_decl(predicate, consequent_expression, alternative_expression) { return list("conditional_expression", predicate, consequent_expression, alternative_expression); } function make_literal(value) { return list("literal", value); } // Syntax selectors function logical_operation(component) { return head(tail(component)); } function first_expression(component) { return head(tail(tail(component))); } function second_expression(component) { return head(tail(tail(tail(component)))); } function logical_comp_decl_to_conditional_expr_decl(component) { const operation = logical_operation(component); return operation === "&&" ? make_conditional_expr_decl( first_expression(component), second_expression(component), false ) : operation === "||" ? make_conditional_expr_decl( first_expression(component), true, second_expression(component) ) : error(component, "unknown operation -- logical_comp_decl_to_conditional_expr_decl"); } display(logical_comp_decl_to_conditional_expr_decl(parse("a && b;"))); display(logical_comp_decl_to_conditional_expr_decl(parse("a || b;"))); display(logical_comp_decl_to_conditional_expr_decl(parse("(a && !b) || (!a && b);")));

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions