Blokovani pres konstantu
[mirrors/Programs.git] / lisp / zavorky.scm
CommitLineData
086b8764
TM
1#lang racket
2
3(define (ohodnot znak)
4 "vrati +1 pro otevrenou zavorku, -1 pro zavrenou a 0 pro ostatni znaky"
5 (if (char=? znak #\()
6 1
7 (if (char=? znak #\))
8 -1
9 0
10 )
11 )
12)
13
14(define (uvozovky znak faktor)
15 "vrati faktor zavisly na tom zda jsme nebo nejsme uvnitr apostrofu, k tomu vyuziva predchozi stav"
16 (if (char=? znak #\')
17 (modulo (+ faktor 1) 2)
18 faktor
19 )
20)
21
22
23
24(define (zavorky text [debug #f] [soucet 0] [faktor 1])
25 "vypise soucet nezavrenych zavorek v retezci, zaporna cisla udavaji zavorky zavrene navic. ignoruje znaky v apostrofech. lze zapnout debug mod."
26 (if debug
27 (begin
28 (display soucet)
29 (display "x")
30 (display faktor)
31 (display ":")
32 (display text)
33 (display "\n")
34 )
35 0
36 )
37 (if (non-empty-string? text)
38 (zavorky (substring text 1) debug (+ soucet (* (ohodnot (string-ref text 0)) faktor)) (uvozovky (string-ref text 0) faktor))
39 soucet
40 )
41)
42
43;Ukazka pouziti:
44
45(zavorky "pokus (')))')((")
46
47;Ukazka vcetne debug modu
48
49;(zavorky "pokus (')))')((" #t)
This page took 0.195689 seconds and 4 git commands to generate.