1
2
3
4
5
6
7
8 class SyntaxExample {
9
10 new {
11
12 IO.print("I am a constructor!")
13
14 variables
15 fields()
16
17 SyntaxExample.fields(1)
18 }
19
20
21 new(a, b) {
22 print(a, b)
23 field = a
24 }
25
26
27 variables {
28
29 var hi
30 var camelCase
31 var PascalCase
32 var abc123
33 var ALL_CAPS
34 }
35
36
37 fields() {
38
39 _under_score = 1
40 _field = 2
41 }
42
43
44 static fields(a) {
45
46 __a = a
47 }
48
49
50 field=(value) { _field = value }
51
52
53 print(a, b) { IO.print(a + b) }
54 }
55
56
57 class ReservedWords is SyntaxExample {
58
59 new {
60
61 super(true, false)
62
63 this.foo
64
65 new SyntaxExample
66 }
67
68 foo {
69
70 var n = 27
71
72 while (n != 1) if (n % 2 == 0) n = n / 2 else n = 3 * n + 1
73
74
75 for (beatle in ["george", "john", "paul", "ringo"]) {
76 IO.print(beatle)
77
78 break
79 }
80
81
82 return null
83 }
84
85 imports {
86
87 import "hello"
88
89 import "set" for Set
90 }
91
92
93 foreign static bar
94 foreign baz(string)
95
96 }
97
98 class literals is SyntaxExample {
99 booleans { true || false }
100 numbers {
101 0
102 1234
103 -5678
104 3.14159
105 1.0
106 -12.34
107 0xdeadbeef
108 0x1234567890ABCDEF
109 }
110 strings {
111 "hi there"
112
113 "\0"
114 "\""
115 "\\"
116 "\a"
117 "\b"
118 "\f"
119 "\n"
120 "\r"
121 "\t"
122 "\v"
123
124 IO.print("\u0041\u0b83\u00DE")
125
126 IO.print("\x48\x69\x2e")
127 }
128 ranges {
129 3..8
130 4...6
131 }
132 nothing { null }
133
134 lists {
135 var list = [1, "banana", true]
136 list[0] = 5
137 list[1..2]
138 }
139 maps {
140 var stringMap = {
141 "George": "Harrison",
142 "John": "Lennon",
143 "Paul": "McCartney",
144 "Ringo": "Starr"
145 }
146 var a = 1
147 var weirdMap = {
148 true: 1,
149 false: 0,
150 null: -1,
151 "str": "abc",
152 (1..5): 10,
153 a: 2,
154 _a: 3,
155 __a: 4
156 }
157 }
158 }