repos / gbc

GBC - Go B Compiler
git clone https://github.com/xplshn/gbc.git

gbc / tests
xplshn  ·  2025-09-10

enums2.bx

Bx
 1extrn printf;
 2
 3type enum TrafficLight {
 4	RED,
 5	YELLOW,
 6	GREEN
 7};
 8
 9TrafficLight get_next_light(current_light TrafficLight) {
10	if (int(current_light) == GREEN) {
11		return (YELLOW);
12	}
13	if (int(current_light) == YELLOW) {
14		return (RED);
15	}
16	return (GREEN);
17}
18
19void print_action(light TrafficLight) {
20	switch (light) {
21	case RED: printf("RED - Stop.\n"); break;
22	case YELLOW: printf("YELLOW - Caution.\n"); break;
23	case GREEN: printf("GREEN - Go.\n"); break;
24	default: printf("Unknown light.\n");
25	}
26}
27
28int main() {
29	auto current_light = RED;
30
31	print_action(current_light);
32
33	current_light = get_next_light(current_light);
34	print_action(current_light);
35
36	current_light = get_next_light(current_light);
37	print_action(current_light);
38
39	current_light = get_next_light(current_light);
40	print_action(current_light);
41
42	return (0);
43}