blob: d17184c841e27b2b40bad7cef7cf5395c7f42401 (
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
CLASS Box
Value : INTEGER
OVERLOAD FUNCTION OPERATOR+(rhs : INTEGER) RETURNS Box
DECLARE result : Box
result.Value <- Value + rhs
RETURN result
ENDFUNCTION
OVERLOAD FUNCTION OPERATOR+(rhs : Box) RETURNS INTEGER
Value <- Value + rhs.Value
RETURN Value
ENDFUNCTION
OVERLOAD FUNCTION OPERATOR-() RETURNS INTEGER
RETURN -Value
ENDFUNCTION
OVERLOAD FUNCTION OPERATOR NOT() RETURNS STRING
RETURN "negated"
ENDFUNCTION
PRIVATE OVERLOAD FUNCTION OPERATOR&(rhs : STRING) RETURNS STRING
RETURN NUM_TO_STR(Value) & rhs
ENDFUNCTION
FUNCTION Describe() RETURNS STRING
RETURN this & "!"
ENDFUNCTION
ENDCLASS
OVERLOAD FUNCTION OPERATOR-(lhs : Box, rhs : INTEGER) RETURNS INTEGER
RETURN lhs.Value - rhs
ENDFUNCTION
OVERLOAD FUNCTION OPERATOR*(lhs : Box, rhs : Box) RETURNS INTEGER
THROW
RETURN 0
ENDFUNCTION
FUNCTION MakeBox() RETURNS Box
OUTPUT "make"
DECLARE result : Box
result.Value <- 4
RETURN result
ENDFUNCTION
FUNCTION Number() RETURNS INTEGER
OUTPUT "number"
RETURN 2
ENDFUNCTION
DECLARE a : Box
DECLARE b : Box
DECLARE result : Box
a.Value <- 3
b.Value <- 5
result <- (a + 2) + 4
OUTPUT result.Value
OUTPUT -a
OUTPUT NOT a
OUTPUT a.Describe()
OUTPUT a + b
OUTPUT a.Value
OUTPUT a.OPERATOR+(1) - 1
OUTPUT OPERATOR-(a, 2)
CALL a.OPERATOR-( )
a.OPERATOR-( )
CALL OPERATOR-(a, 1)
OPERATOR-(a, 1)
result <- MakeBox() + Number()
OUTPUT result.Value
TRY
OUTPUT a * b
CATCH
OUTPUT "caught"
ENDTRY
|