#lang racket (provide (struct-out const) (struct-out binop) rpn->arith) ;; ------------------------------- ;; Wyrazenia w odwr. not. polskiej ;; ------------------------------- (define (rpn-expr? e) (and (list? e) (pair? e) (andmap (lambda (x) (or (number? x) (member x '(+ - * /)))) e))) ;; ---------------------- ;; Wyrazenia arytmetyczne ;; ---------------------- (struct const (val) #:transparent) (struct binop (op l r) #:transparent) (define (arith-expr? e) (match e [(const n) (number? n)] [(binop op l r) (and (symbol? op) (arith-expr? l) (arith-expr? r))] [_ false])) ;; ---------- ;; Kompilacja ;; ---------- (define (rpn->arith e) (error "TODO: Uzupelnij tutaj")) ; Mozesz tez dodac jakies procedury pomocnicze i testy