stl + brainfuck sample program

This commit is contained in:
Altareos
2022-02-24 13:29:37 +01:00
parent 67bf2efab7
commit 6c5533ae98
7 changed files with 738 additions and 102 deletions

View File

@@ -32,29 +32,35 @@
<to><integer value="3" /></to>
<step><integer value="1" /></step>
<do>
<insert-array>
<array><value variable="a" /></array>
<value><value variable="i" /></value>
</insert-array>
<call function="array-push">
<arguments>
<value variable="a" />
<value variable="i" />
</arguments>
</call>
</do>
</for>
<print>
<call function="sum">
<arguments>
<value variable="a" />
</arguments>
</call>
</print>
<print>
<call function="sum">
<arguments>
<array>
<integer value="11"/>
<integer value="13"/>
<integer value="12"/>
</array>
</arguments>
</call>
</print>
<call function="print">
<arguments>
<call function="sum">
<arguments>
<value variable="a" />
</arguments>
</call>
</arguments>
</call>
<call function="print">
<arguments>
<call function="sum">
<arguments>
<array>
<integer value="11"/>
<integer value="13"/>
<integer value="12"/>
</array>
</arguments>
</call>
</arguments>
</call>
</main>
</program>

369
sample/bf.pl.xml Normal file
View File

@@ -0,0 +1,369 @@
<program name="brainfuck">
<main>
<assign variable="prog">
<call function="string-split">
<arguments>
<call function="input">
<arguments />
</call>
<string value="" />
</arguments>
</call>
</assign>
<assign variable="i">
<integer value="0" />
</assign>
<assign variable="p">
<integer value="0" />
</assign>
<assign variable="t">
<array />
</assign>
<for variable="_">
<from><integer value="0" /></from>
<to><integer value="100" /></to>
<step><integer value="1" /></step>
<do>
<call function="array-push">
<arguments>
<value variable="t" />
<integer value="0" />
</arguments>
</call>
</do>
</for>
<while>
<not>
<equal>
<value variable="i" />
<call function="array-length">
<arguments>
<value variable="prog" />
</arguments>
</call>
</equal>
</not>
<do>
<assign variable="c">
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
</assign>
<if>
<equal>
<string value="+" />
<value variable="c" />
</equal>
<then>
<call function="array-set">
<arguments>
<value variable="t" />
<value variable="p" />
<add>
<call function="array-get">
<arguments>
<value variable="t" />
<value variable="p" />
</arguments>
</call>
<integer value="1" />
</add>
</arguments>
</call>
</then>
<else>
<if>
<equal>
<string value="-" />
<value variable="c" />
</equal>
<then>
<call function="array-set">
<arguments>
<value variable="t" />
<value variable="p" />
<subtract>
<call function="array-get">
<arguments>
<value variable="t" />
<value variable="p" />
</arguments>
</call>
<integer value="1" />
</subtract>
</arguments>
</call>
</then>
<else>
<if>
<equal>
<string value=">" />
<value variable="c" />
</equal>
<then>
<assign variable="p">
<add>
<value variable="p" />
<integer value="1" />
</add>
</assign>
</then>
<else>
<if>
<equal>
<string value="&lt;" />
<value variable="c" />
</equal>
<then>
<assign variable="p">
<subtract>
<value variable="p" />
<integer value="1" />
</subtract>
</assign>
</then>
<else>
<if>
<equal>
<string value="." />
<value variable="c" />
</equal>
<then>
<call function="print">
<arguments>
<call function="array-get">
<arguments>
<value variable="t" />
<value variable="p" />
</arguments>
</call>
</arguments>
</call>
</then>
<else>
<if>
<equal>
<string value="," />
<value variable="c" />
</equal>
<then>
</then>
<else>
<if>
<equal>
<string value="[" />
<value variable="c" />
</equal>
<then>
<if>
<not>
<call function="array-get">
<arguments>
<value variable="t" />
<value variable="p" />
</arguments>
</call>
</not>
<then>
<assign variable="open">
<integer value="0" />
</assign>
<assign variable="i">
<add>
<value variable="i" />
<integer value="1" />
</add>
</assign>
<while>
<not>
<and>
<equal>
<value variable="open" />
<integer value="0" />
</equal>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="]" />
</equal>
</and>
</not>
<do>
<if>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="[" />
</equal>
<then>
<assign variable="open">
<add>
<value variable="open" />
<integer value="1" />
</add>
</assign>
</then>
</if>
<if>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="]" />
</equal>
<then>
<assign variable="open">
<subtract>
<value variable="open" />
<integer value="1" />
</subtract>
</assign>
</then>
</if>
<assign variable="i">
<add>
<value variable="i" />
<integer value="1" />
</add>
</assign>
</do>
</while>
</then>
</if>
</then>
<else>
<if>
<equal>
<string value="]" />
<value variable="c" />
</equal>
<then>
<if>
<call function="array-get">
<arguments>
<value variable="t" />
<value variable="p" />
</arguments>
</call>
<then>
<assign variable="open">
<integer value="0" />
</assign>
<assign variable="i">
<subtract>
<value variable="i" />
<integer value="1" />
</subtract>
</assign>
<while>
<not>
<and>
<equal>
<value variable="open" />
<integer value="0" />
</equal>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="[" />
</equal>
</and>
</not>
<do>
<if>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="[" />
</equal>
<then>
<assign variable="open">
<subtract>
<value variable="open" />
<integer value="1" />
</subtract>
</assign>
</then>
</if>
<if>
<equal>
<call function="array-get">
<arguments>
<value variable="prog" />
<value variable="i" />
</arguments>
</call>
<string value="]" />
</equal>
<then>
<assign variable="open">
<add>
<value variable="open" />
<integer value="1" />
</add>
</assign>
</then>
</if>
<assign variable="i">
<subtract>
<value variable="i" />
<integer value="1" />
</subtract>
</assign>
</do>
</while>
</then>
</if>
</then>
<else>
</else>
</if>
</else>
</if>
</else>
</if>
</else>
</if>
</else>
</if>
</else>
</if>
</else>
</if>
</else>
</if>
<assign variable="i">
<add>
<value variable="i" />
<integer value="1" />
</add>
</assign>
</do>
</while>
</main>
</program>

View File

@@ -3,14 +3,18 @@
<if>
<integer value="1" />
<then>
<print>
<string value="TRUE" />
</print>
<call function="print">
<arguments>
<string value="TRUE" />
</arguments>
</call>
</then>
<else>
<print>
<call function="print">
<arguments>
<string value="FALSE" />
</print>
</arguments>
</call>
</else>
</if>
</main>

40
sample/stl.pl.xml Normal file
View File

@@ -0,0 +1,40 @@
<program>
<main>
<call function="print">
<arguments>
<integer value="1" />
</arguments>
</call>
<assign variable="arr">
<array>
<float value="0.1" />
</array>
</assign>
<call function="array-set">
<arguments>
<value variable="arr" />
<integer value="0" />
<float value="0.5" />
</arguments>
</call>
<each variable="v">
<value variable="arr" />
<do>
<call function="print">
<arguments>
<value variable="v" />
</arguments>
</call>
</do>
</each>
<call function="print">
<arguments>
<call function="array-pop">
<arguments>
<value variable="arr" />
</arguments>
</call>
</arguments>
</call>
</main>
</program>

View File

@@ -24,8 +24,10 @@
</arguments>
</call>
</assign>
<print>
<value variable="b" />
</print>
<call function="print">
<arguments>
<value variable="b" />
</arguments>
</call>
</main>
</program>

View File

@@ -6,9 +6,11 @@
<while>
<value variable="a" />
<do>
<print>
<value variable="a" />
</print>
<call function="print">
<arguments>
<value variable="a" />
</arguments>
</call>
<assign variable="a">
<subtract>
<value variable="a" />