Itty Bitty Programming Language List Converter Assignment
Revision as of 04:00, 31 October 2023 by Dennis.cosgrove (talk | contribs)
In a series of assignments, we will build the Itty Bitty Programming Language (IBPL). The inspiration for these assignments is MUPL by Dan Grossman and his team at UW.
One can build an IBPL Abstract Syntax Tree (AST) with the following expressions:
(struct IdentifierExp (name) #:transparent)
(struct IntExp (value) #:transparent)
(struct AddExp (left_exp right_exp) #:transparent)
(struct IfGreaterExp (left_exp right_exp then_body_exp else_body_exp) #:transparent)
(struct NilExp () #:transparent)
(struct IsNilExp (exp) #:transparent)
(struct ConsExp (car_exp cdr_exp) #:transparent)
(struct CarOfConsExp (cons_exp) #:transparent)
(struct CdrOfConsExp (cons_exp) #:transparent)
(struct LetExp (binding_name binding_exp body_exp) #:transparent)
(struct FunctionExp (name_option parameter_name body_exp) #:transparent)
(struct CallExp (function_exp argument_exp) #:transparent)
IBPL AST Functions To Use
For this exercise, we will use on IntExp, NilExp, and ConsExp.
struct IntExp
(IntExp v)
(IntExp? exp)
(IntExp-value exp)
struct NilExp
(NilExp)
(NilExp? exp)
struct ConsExp
(ConsExp car_exp cdr_exp)
(ConsExp? exp)
(ConsExp-car_exp exp)
(ConsExp-cdr_exp exp)
Racket Utilities To Use
Code To Implement
file: | src/main/racket/ibpl/list_converter/list_converter.rkt | |
functions: | racket-integers->ib-IntExps ib-IntExps->racket-integers |