Browse Source

Автодок перемещён в подкаталог

Arthur Yefimov 2 years ago
parent
commit
458864c22c

+ 2 - 0
.gitignore

@@ -2,6 +2,8 @@
 /FreeOberon.exe
 /fob
 /fob.exe
+Autodoc
+Autodoc.exe
 _Build
 /src/Makefile
 /src/*.o

+ 0 - 93
Programs/Examples/Apples.Mod

@@ -1,93 +0,0 @@
-(*
-Файл -> модуль
-  (название)
-
-Объекты:
-  - константы
-  - типы
-  - переменные
-  - процедуры
-
-(только эспортированное)
-
-Комментарии вида (**...*):
-  - перед объектами
-  - перед группами объектов
-*)
-
-
-(**
-Module Apples helps in counting apples.
-One can create a variable of type Apples.Apple,
-call Init and other procedures on it.
-*)
-MODULE Apples;
-IMPORT Out;
-
-CONST
-  maxApples* = 5;  (** Maximum amount of apples. Currently unused *)
-  startApples = 0; (** Start amount of apples. Used in Reset *)
-
-TYPE
-  Apple* = RECORD    (** Represents an apple with maybe some seeds *)
-    seeds*: INTEGER; (** Amount of seeds in the apple *)
-    added: BOOLEAN   (** Whether Add was called on this seed after Init *)
-  END;
-
-VAR
-  applesCreated*: INTEGER; (** How many apples were created using Init *)
-  (** If FALSE, Show shows a welcome message and sets shown to TRUE *)
-  shown: BOOLEAN;
-  lastAdded*: INTEGER; (** How many seeds were added the last time *)
-
-(** Sets the given amount of seeds to apple a. *)
-PROCEDURE Set(VAR a: Apple; seeds: INTEGER);
-BEGIN
-  a.seeds := seeds
-END Set;
-
-PROCEDURE Init*(VAR a: Apple; seeds: INTEGER);
-(** Initializes apple a with the specified amount of seeds. *)
-BEGIN
-  INC(applesCreated);
-  Set(a, seeds);
-  a.added := FALSE
-END Init;
-
-(** Adds n seeds to apple a. *)
-PROCEDURE Add*(VAR a: Apple; n: INTEGER);
-BEGIN
-  lastAdded := n;
-  Set(a, a.seeds + n);
-  a.added := TRUE
-END Add;
-
-PROCEDURE Show*(a: Apple);
-(** Dispalys a message about the apple. *)
-BEGIN
-  IF ~shown THEN
-    Out.String('Welcome to Apples!');
-    Out.Ln;
-    shown := TRUE
-  END;
-  IF a.added THEN
-    Out.String('Added apple with ')
-  ELSE
-    Out.String('Apple with ')
-  END;
-  Out.Int(a.seeds, 0);
-  Out.String(' seeds.');
-  Out.Ln
-END Show;
-
-(** Resets internal apple counter. *)
-PROCEDURE Reset*;
-BEGIN
-  lastAdded := -1;
-  applesCreated := startApples;
-  shown := FALSE
-END Reset;
-
-BEGIN
-  Reset
-END Apples.

+ 0 - 0
src/Autodoc.Mod → src/Autodoc/Autodoc.Mod


+ 0 - 0
src/AutodocParser.Mod → src/Autodoc/AutodocParser.Mod


+ 19 - 0
src/Autodoc/Config.Mod

@@ -0,0 +1,19 @@
+MODULE Config;
+IMPORT Platform;
+CONST
+  isWindows* = Platform.Windows;
+  stdPath* = 'Programs/';
+
+  version* = '1.1.0-alpha.6';
+  year* = 2022;
+
+VAR
+  debug*: BOOLEAN;
+
+PROCEDURE SetDebug*(deb: BOOLEAN);
+BEGIN debug := deb
+END SetDebug;
+
+BEGIN
+  debug := FALSE
+END Config.

+ 11 - 0
src/Autodoc/Makefile

@@ -0,0 +1,11 @@
+
+all: Autodoc
+
+Autodoc: Autodoc.Mod
+	fob Autodoc.Mod
+
+run: Autodoc
+	clear;./Autodoc Test/Apples.Mod
+
+.phony: run
+

+ 112 - 0
src/Autodoc/Test/Apples.Mod

@@ -0,0 +1,112 @@
+(*
+Файл -> модуль
+  (название)
+
+Объекты:
+  - константы
+  - типы
+  - переменные
+  - процедуры
+
+(только эспортированное)
+
+Комментарии вида (**...*):
+  - начинающиеся на той же строке, на которой заканчивается объект
+  - перед объектами (с одной звёздочкой на конце)
+  - перед группами объектов (с двумя звёздочками на конце), "заголовки"
+*)
+
+
+(** Module Apples helps count apples.
+    One can create a variable of type Apples.Apple,
+    call Init and other procedures on it. *)
+MODULE Apples;
+(** Это тестовый модуль. *)
+IMPORT Out, Fruits;
+
+CONST
+  (** Общие постоянные **)
+  maxApples*  =  5; (** Maximum amount of apples. Currently unused *)
+  maxSeeds*   = 10; (** Currently not in use *)
+  startApples =  0; (** Start amount of apples. Used in Reset *)
+
+  (** Качество яблока **)
+  unknown* = 0; (** Неизвестное качество *)
+  good*    = 1; (** Сносное качество *)
+  bad*     = 2; (** Отвратное качество *)
+
+TYPE
+  (** Тип яблоко *)
+  Apple* = RECORD(Fruits.Fruit) (** Represents an apple with some seeds *)
+    seeds*: INTEGER;   (** Amount of seeds in the apple *)
+    quality*: INTEGER; (** Качество продукта, см. @Качество яблока *)
+    added: BOOLEAN     (** Whether Add was called on this seed after Init *)
+  END;
+
+VAR
+  applesCreated*: INTEGER; (** How many apples were created using Init *)
+  (** If FALSE, Show shows a welcome message and sets shown to TRUE *)
+  shown: BOOLEAN;
+  lastAdded*: INTEGER; (** How many seeds were added the last time, or -1 *)
+
+(** Sets the given amount of seeds to apple a. *)
+PROCEDURE Set(VAR a: Apple; seeds: INTEGER);
+BEGIN
+  a.seeds := seeds;
+  IF seeds >= 3 THEN a.quality := good
+  ELSIF seeds = 0 THEN a.quality := bad
+  ELSE a.quality := unknown
+  END
+END Set;
+
+PROCEDURE Init*(VAR a: Apple; seeds: INTEGER);
+(** Initializes apple a with the specified amount of seeds. *)
+BEGIN
+  INC(applesCreated);
+  Set(a, seeds);
+  a.added := FALSE
+END Init;
+
+(** Apple manipulation **)
+
+(** Adds n seeds to apple a. *)
+PROCEDURE Add*(VAR a: Apple; n: INTEGER);
+BEGIN
+  lastAdded := n;
+  Set(a, a.seeds + n);
+  a.added := TRUE
+END Add;
+
+PROCEDURE Show*(a: Apple);
+(** Dispalys a message about the apple. *)
+BEGIN
+  IF ~shown THEN
+    Out.String('Welcome to Apples!');
+    Out.Ln;
+    shown := TRUE
+  END;
+  IF a.added THEN
+    Out.String('Added apple with ')
+  ELSE
+    Out.String('Apple with ')
+  END;
+  Out.Int(a.seeds, 0);
+  Out.String(' seeds.');
+  Out.Ln
+END Show;
+
+(** - **)
+
+(** Resets internal apple counter. *)
+PROCEDURE Reset*;
+BEGIN
+  lastAdded := -1;
+  applesCreated := startApples;
+  shown := FALSE
+END Reset;
+
+PROCEDURE Shown*(): BOOLEAN; RETURN shown END Shown; (** Было ли приветствие *)
+
+BEGIN
+  Reset
+END Apples.

+ 4 - 0
src/Autodoc/Test/Fruits.Mod

@@ -0,0 +1,4 @@
+MODULE Fruits;
+TYPE
+  Fruit* = RECORD END;
+END Fruits.