Rev 7693 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7693 | Rev 7696 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018, 2019, Anton Krotov |
4 | Copyright (c) 2018-2019, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 44... | Line 44... | ||
44 | VAR |
44 | VAR |
45 | res: INTEGER; |
45 | res: INTEGER; |
Line 46... | Line 46... | ||
46 | 46 | ||
Line 47... | Line -... | ||
47 | BEGIN |
- | |
48 | - | ||
49 | IF v.typ = tINTEGER THEN |
47 | BEGIN |
50 | res := v.int |
- | |
51 | ELSIF v.typ = tCHAR THEN |
48 | |
52 | res := v.int |
49 | CASE v.typ OF |
53 | ELSIF v.typ = tWCHAR THEN |
50 | |tINTEGER, tCHAR, tWCHAR: |
54 | res := v.int |
51 | res := v.int |
55 | ELSIF v.typ = tSET THEN |
52 | |tSET: |
56 | res := UTILS.Long(ORD(v.set)) |
53 | res := UTILS.Long(ORD(v.set)) |
57 | ELSIF v.typ = tBOOLEAN THEN |
54 | |tBOOLEAN: |
Line 58... | Line 55... | ||
58 | res := ORD(v.bool) |
55 | res := ORD(v.bool) |
59 | END |
56 | END |
Line 78... | Line 75... | ||
78 | END Float; |
75 | END Float; |
Line 79... | Line 76... | ||
79 | 76 | ||
80 | 77 | ||
81 | PROCEDURE check* (v: VALUE): BOOLEAN; |
78 | PROCEDURE check* (v: VALUE): BOOLEAN; |
Line 82... | Line 79... | ||
82 | VAR |
79 | VAR |
83 | error: BOOLEAN; |
80 | res: BOOLEAN; |
84 | - | ||
85 | BEGIN |
81 | |
86 | error := FALSE; |
- | |
87 | 82 | BEGIN |
|
88 | IF (v.typ = tINTEGER) & ((v.int < UTILS.target.minInt) OR (v.int > UTILS.target.maxInt)) THEN |
- | |
89 | error := TRUE |
83 | CASE v.typ OF |
90 | ELSIF (v.typ = tCHAR) & ((v.int < 0) OR (v.int > 255)) THEN |
- | |
91 | error := TRUE |
84 | |tINTEGER: res := (UTILS.target.minInt <= v.int) & (v.int <= UTILS.target.maxInt) |
92 | ELSIF (v.typ = tWCHAR) & ((v.int < 0) OR (v.int > 65535)) THEN |
- | |
93 | error := TRUE |
85 | |tCHAR: res := (0 <= v.int) & (v.int <= 255) |
Line 94... | Line 86... | ||
94 | ELSIF (v.typ = tREAL) & ((v.float < -UTILS.target.maxReal) OR (v.float > UTILS.target.maxReal)) THEN |
86 | |tWCHAR: res := (0 <= v.int) & (v.int <= 65535) |
95 | error := TRUE |
87 | |tREAL: res := (-UTILS.target.maxReal <= v.float) & (v.float <= UTILS.target.maxReal) |
Line 96... | Line 88... | ||
96 | END |
88 | END |
97 | 89 | ||
98 | RETURN ~error |
90 | RETURN res |
99 | END check; |
- | |
100 | - | ||
Line -... | Line 91... | ||
- | 91 | END check; |
|
101 | 92 | ||
102 | PROCEDURE isZero* (v: VALUE): BOOLEAN; |
93 | |
103 | VAR |
- | |
104 | res: BOOLEAN; |
94 | PROCEDURE isZero* (v: VALUE): BOOLEAN; |
105 | BEGIN |
95 | VAR |
Line 106... | Line 96... | ||
106 | ASSERT(v.typ IN {tINTEGER, tREAL}); |
96 | res: BOOLEAN; |
107 | 97 |