blob: f449481cdf9c7366128f3c1767ced7d1fafbecfe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#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
|