Bläddra i källkod

Обновлено 2015-07-17-лола.md

Пётр 10 år sedan
förälder
incheckning
1cb1879823
1 ändrade filer med 29 tillägg och 30 borttagningar
  1. 29 30
      _posts/2015-07-17-лола.md

+ 29 - 30
_posts/2015-07-17-лола.md

@@ -9,37 +9,36 @@ published: true
 
 Придумалось тут:
 
-````
-UNIT Fib
-	VAR res+, n- INTEGER
-	VAR f Fib
-PROCESS
-	f.n <- n - 1
-	res <- IF n # 0 THEN n + f.res ELSE 1 END
-END Fib
+  UNIT Fib
+      VAR res+, n- INTEGER
+      VAR f Fib
+  PROCESS
+      f.n <- n - 1
+      res <- IF n # 0 THEN n + f.res ELSE 1 END
+  END Fib
+  
+  UNIT Fact
+      VAR res+, n- INTEGER
+      REG x INTEGER
+  INIT
+      x <- 1
+  PROCESS
+      res <- IF n = 0 THEN x END
+      x <- IF n # 0 THEN x*n ELSE 1 END
+      n <- IF n # 0 THEN n - 1 END
+  END Fact
+  
+  UNIT Top
+      REG x, y INTEGER
+      VAR fi Fib
+      VAR fa Fact
+  PROCESS
+      fi.n <- 10
+      x <- IF x = 0 THEN fi.res END
+      fa.n <- 10
+      y <- IF y = 0 THEN fa.res END
+  END Top
 
-UNIT Fact
-	VAR res+, n- INTEGER
-	REG x INTEGER
-INIT
-	x <- 1
-PROCESS
-	res <- IF n = 0 THEN x END
-	x <- IF n # 0 THEN x*n ELSE 1 END
-	n <- IF n # 0 THEN n - 1 END
-END Fact
-
-UNIT Top
-	REG x, y INTEGER
-	VAR fi Fib
-	VAR fa Fact
-PROCESS
-	fi.n <- 10
-	x <- IF x = 0 THEN fi.res END
-	fa.n <- 10
-	y <- IF y = 0 THEN fa.res END
-END Top
-````
 
 В целом, как и в Lola, есть только инструкция присваивания. Точнее даже не присваивания, а ожидания. Вся активность модулей определяется итерациями инструкций внутри секции PROCESS. Формально, это статичное описание состояния, а не итерации, но исполнять иначе не получится. По завершению первой итерации модуль `Top` ожидает от `Fib` и `Fact` сообщений из выходного канала `res`, так как условие `x = 0` истинно.
 Наверное, так устроены все декларативные языки.