diff options
author | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2016-05-22 17:48:30 +0200 |
---|---|---|
committer | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2016-05-22 17:48:30 +0200 |
commit | bbcb29a202436fc0e222e187f1fadf0b1f305465 (patch) | |
tree | fed504361df37c4ce01b5b13c1082d5f3234de79 /prolog/problems/algol/algol_3/en.py | |
parent | 4973979e40dfdc26dafe1cdeddf8e0bce859ba5d (diff) |
Prolog: update denotational_semantics problems
Diffstat (limited to 'prolog/problems/algol/algol_3/en.py')
-rw-r--r-- | prolog/problems/algol/algol_3/en.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/prolog/problems/algol/algol_3/en.py b/prolog/problems/algol/algol_3/en.py new file mode 100644 index 0000000..3b91a47 --- /dev/null +++ b/prolog/problems/algol/algol_3/en.py @@ -0,0 +1,32 @@ +name = 'algol/3' +slug = 'interpreter for mini-algol' + +description = '''\ +<p>A DCG for mini-algol.</p> +<pre> +% 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]]. +</pre> +''' + +hint = {} |