From 95e2fe57f6e4639f6ae9f1fef368829d5090dbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Tue, 18 Aug 2015 16:06:19 +0200 Subject: Exported all problems from the SQLite database into the new directory structure. --- .../problems/denotational_semantics/algol_3/en.py | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 prolog/problems/denotational_semantics/algol_3/en.py (limited to 'prolog/problems/denotational_semantics/algol_3/en.py') diff --git a/prolog/problems/denotational_semantics/algol_3/en.py b/prolog/problems/denotational_semantics/algol_3/en.py new file mode 100644 index 0000000..4b46b11 --- /dev/null +++ b/prolog/problems/denotational_semantics/algol_3/en.py @@ -0,0 +1,33 @@ +id = 176 +name = 'algol/3' +slug = 'interpreter for mini-algol' + +description = '''\ +

A DCG for mini-algol.

+
+  % apply a function to a starting state
+  ?- apply([a=2], Out, fun(_In, Out, eval(a+3, _In, Out))).
+    Out = 5.
+
+  % a := a+b
+  % b := a-b
+  % a := a-b
+  ?- _Program = [begin,a,:=,a+b,b,:=,a-b,a,:=,a-b,end],
+      algol(_F, _Program, []),
+      apply([a=3,b=5], Output, _F).
+    Output = [a=5,b=3,printout=[]].
+
+  % a := 0
+  % while a < 10 do
+  % begin
+  %   print(a)
+  %   a := a+1
+  % end
+  ?- _Program = [begin,a,:=,0,while,a,<,10,do,begin,print(a),a,:=,a+1,end,end],
+      algol(_F, _Program, []),
+      apply([a=3], Output, _F).
+    Output = [a=10,printout=[0,1,2,3,4,5,6,7,8,9]].
+
+''' + +hint = {} -- cgit v1.2.1