From 8e1a8f7d6fa6d50172b81fbdf2864e2bff61d077 Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 19:19:27 +0400 Subject: [PATCH 1/9] initial. --- Day.Mod | 8 ++++++++ test.Mod | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 Day.Mod create mode 100644 test.Mod diff --git a/Day.Mod b/Day.Mod new file mode 100644 index 0000000..4eb7dbe --- /dev/null +++ b/Day.Mod @@ -0,0 +1,8 @@ +MODULE Day; + + TYPE T* = RECORD END; + + VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : T; + + +END Day. diff --git a/test.Mod b/test.Mod new file mode 100644 index 0000000..b18bb2a --- /dev/null +++ b/test.Mod @@ -0,0 +1,8 @@ +MODULE test. + +IMPORT Day; + +VAR today: Days.Day; + + +END test. From 3cbba94857ec0e92b5b671a23f48d2a866650072 Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 19:20:44 +0400 Subject: [PATCH 2/9] rename and smth. --- Day.Mod | 8 -------- Days.Mod | 8 ++++++++ test.Mod | 3 +++ 3 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 Day.Mod create mode 100644 Days.Mod diff --git a/Day.Mod b/Day.Mod deleted file mode 100644 index 4eb7dbe..0000000 --- a/Day.Mod +++ /dev/null @@ -1,8 +0,0 @@ -MODULE Day; - - TYPE T* = RECORD END; - - VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : T; - - -END Day. diff --git a/Days.Mod b/Days.Mod new file mode 100644 index 0000000..914ff4d --- /dev/null +++ b/Days.Mod @@ -0,0 +1,8 @@ +MODULE Days; + + TYPE Day* = RECORD END; + + VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day; + + +END Days. diff --git a/test.Mod b/test.Mod index b18bb2a..aeec3a5 100644 --- a/test.Mod +++ b/test.Mod @@ -4,5 +4,8 @@ IMPORT Day; VAR today: Days.Day; +BEGIN + today := Days.mon; (*init*) + END test. From ee38ab860ab7817686d5dc5bee8ca98b5d906877 Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:05:27 +0400 Subject: [PATCH 3/9] Days.Mod example written. --- Days.Mod | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/Days.Mod b/Days.Mod index 914ff4d..ae5ac3c 100644 --- a/Days.Mod +++ b/Days.Mod @@ -1,8 +1,66 @@ MODULE Days; - TYPE Day* = RECORD END; - - VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day; + TYPE + Day* = POINTER TO DayDesc; + DayDesc = RECORD + next*, prev* : Day; + END DayDesc; + TYPE Week = ARRAY 7 OF Day; + VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day; + week: ARRAY 7 OF Day; + + PROCEDURE Next*(d : Day): Day; + BEGIN + RETURN d.next + END Next; + + PROCEDURE Prev*(d: Day): Day; + BEGIN + RETURN d.prev; + END Prev; + + PROCEDURE inc(VAR j: SHORTINT); + BEGIN + IF j = 6 THEN + j := 0 + ELSE + INC(j) + END + END inc; + + PROCEDURE dec(VAR j: SHORTINT); + BEGIN + IF j = 0 THEN + j := 6 + ELSE + DEC(j) + END + END dec; + + PROCEDURE init(VAR w : Week); + VAR + i,j : SHORTINT; + BEGIN + i := 0; + REPEAT + j := i; inc(j); + w[i].next := w[j]; + j := i; dec(j); + w[i].prev := w[j]; + UNTIL i > 6; + END init; + +BEGIN + NEW(sun); NEW(mon); NEW(tue); NEW(wed); NEW(thu); NEW(fri); NEW(sat); + week[0] := sun; + week[1] := mon; + week[2] := tue; + week[3] := wed; + week[4] := thu; + week[5] := fri; + week[6] := sat; + + init(week); END Days. From 28d02deeae96f2d238c471321bf6bd4d9c8102ef Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:12:52 +0400 Subject: [PATCH 4/9] Days.Mod compiles. --- Days.Mod | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Days.Mod b/Days.Mod index ae5ac3c..37732d9 100644 --- a/Days.Mod +++ b/Days.Mod @@ -1,14 +1,15 @@ MODULE Days; TYPE - Day* = POINTER TO DayDesc; - DayDesc = RECORD - next*, prev* : Day; - END DayDesc; - TYPE Week = ARRAY 7 OF Day; + Day* = POINTER TO DayDesc; + DayDesc = RECORD + next, prev : Day + END; + Week = ARRAY 7 OF Day; - VAR sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day; - week: ARRAY 7 OF Day; + VAR + sun*, mon*, tue*, wed*, thu*, fri*, sat* : Day; + week: Week; PROCEDURE Next*(d : Day): Day; BEGIN From 0f58a5ac19ab630f62a1db0c04d359653772e81a Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:14:24 +0400 Subject: [PATCH 5/9] test also compiles. --- test.Mod | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test.Mod b/test.Mod index aeec3a5..0c5d897 100644 --- a/test.Mod +++ b/test.Mod @@ -1,11 +1,13 @@ -MODULE test. +MODULE test; -IMPORT Day; +IMPORT Days; -VAR today: Days.Day; +VAR today, yesterday, tomorrow: Days.Day; BEGIN today := Days.mon; (*init*) + yesterday := Days.Prev(today); + tomorrow := Days.Next(today); END test. From 0d23645e831db54912b2b3da9c55b4c407fae161 Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:17:18 +0400 Subject: [PATCH 6/9] fix. --- Days.Mod | 1 + 1 file changed, 1 insertion(+) diff --git a/Days.Mod b/Days.Mod index 37732d9..8611a21 100644 --- a/Days.Mod +++ b/Days.Mod @@ -49,6 +49,7 @@ MODULE Days; w[i].next := w[j]; j := i; dec(j); w[i].prev := w[j]; + INC(i) UNTIL i > 6; END init; From 8324eeb9b9a8fd88297f37ec2039775f7fce604c Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:21:33 +0400 Subject: [PATCH 7/9] it works! --- test.Mod | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test.Mod b/test.Mod index 0c5d897..8d49b34 100644 --- a/test.Mod +++ b/test.Mod @@ -1,6 +1,6 @@ MODULE test; -IMPORT Days; +IMPORT Days, Out; VAR today, yesterday, tomorrow: Days.Day; @@ -8,6 +8,15 @@ BEGIN today := Days.mon; (*init*) yesterday := Days.Prev(today); + IF yesterday = Days.sun + THEN + Out.String("it works!"); Out.Ln + END; tomorrow := Days.Next(today); + IF tomorrow = Days.tue + THEN + Out.String("it works!"); Out.Ln + END; + END test. From 8ace13a5a8638f0f20bb1f7281bb751ae345d801 Mon Sep 17 00:00:00 2001 From: norayr Date: Thu, 29 Dec 2016 20:23:38 +0400 Subject: [PATCH 8/9] readme --- readme.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..5459059 --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ + + +Example aimed to show how to survive without enumerations in Oberon. + +This way is even cooler than enumerations. (: + From c0673ff2a94ea7197fef45a54fc268f150a7ffe1 Mon Sep 17 00:00:00 2001 From: norayr Date: Tue, 23 May 2017 15:42:02 +0400 Subject: [PATCH 9/9] tmp --- Days.Mod => enums_example/Days.Mod | 0 readme.md => enums_example/readme.md | 0 test.Mod => enums_example/test.Mod | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename Days.Mod => enums_example/Days.Mod (100%) rename readme.md => enums_example/readme.md (100%) rename test.Mod => enums_example/test.Mod (100%) diff --git a/Days.Mod b/enums_example/Days.Mod similarity index 100% rename from Days.Mod rename to enums_example/Days.Mod diff --git a/readme.md b/enums_example/readme.md similarity index 100% rename from readme.md rename to enums_example/readme.md diff --git a/test.Mod b/enums_example/test.Mod similarity index 100% rename from test.Mod rename to enums_example/test.Mod