Execute Brain****/ALGOL 68: Difference between revisions

Content added Content deleted
(I can read it, but I don't know the language enough to fix it.)
(Allow for nested [])
Line 1: Line 1:
{{incorrect}}
The below Hello World fails.
<pre>
>++++++++[<+++++++++>-]<.>>+>+>++>[-]+<[>[->+<<++++>]<<]>.+++++++..+++.>
>+++++++.<<<[[-]<[-]>]<+++++++++++++++.>>.+++.------.--------.>>+.>++++.
</pre>
{{implementation|Brainf***}}{{collection|RCBF}}
{{implementation|Brainf***}}{{collection|RCBF}}


Line 38: Line 32:
# [ # VOID:
# [ # VOID:
IF data list[data addr] = zero THEN
IF data list[data addr] = zero THEN
FOR new addr FROM code addr + 1 WHILE
# skip to the end of the loop, allowing for nested loops #
code addr := new addr;
INT br level := 0;
code list[new addr] /= ABS "]"
WHILE
IF code list[code addr] = ABS "["
THEN
br level +:= 1;
ELIF code list[code addr] = ABS "]"
THEN
br level -:= 1
FI;
IF br level > 0
THEN
code addr +:= 1;
TRUE
ELSE
FALSE
FI
DO SKIP OD
DO SKIP OD
FI,
FI,
# ] # VOID:
# ] # VOID:
IF data list[data addr] /= zero THEN
IF data list[data addr] /= zero THEN
FOR new addr FROM code addr - 1 BY -1 WHILE
# skip to the start of the loop, allowing for nested loops #
code addr := new addr;
INT br level := 0;
code list[new addr] /= ABS "["
WHILE
IF code list[code addr] = ABS "["
THEN
br level +:= 1
ELIF code list[code addr] = ABS "]"
THEN
br level -:= 1
FI;
code addr -:= 1;
br level < 0
DO SKIP OD
DO SKIP OD
FI
FI