From 7bc5d05a777045dbd5c9feace7c52c074b146794 Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Sun, 29 May 2016 19:04:26 +0200 Subject: Denotational semantics, part #2 (mini algol): tests and translations added. --- prolog/problems/algol/algol_3/sl.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 prolog/problems/algol/algol_3/sl.py (limited to 'prolog/problems/algol/algol_3/sl.py') diff --git a/prolog/problems/algol/algol_3/sl.py b/prolog/problems/algol/algol_3/sl.py new file mode 100644 index 0000000..6fa9b0b --- /dev/null +++ b/prolog/problems/algol/algol_3/sl.py @@ -0,0 +1,32 @@ +name = 'algol/3' +slug = 'interpreter za mini-algol' + +description = '''\ +

DCG za mini-algol.

+
+% uporabi (apply) funkcijo nad začetnim stanjem
+?- 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