Anonymous user
Execute Brain****/Elena: Difference between revisions
m
no edit summary
No edit summary |
mNo edit summary |
||
Line 1:
<lang elena>import system'collections
import system'routines
import system'dynamic
▲import extensions.
▲import extensions'scripting.
▲import extensions'dynamic'expressions.
class TapeAssembler
{
constructor
theBrackets :=
theTape :=
theTape
theTape
constructor
<=
assembly_program(
open()
theBrackets
theTape :=
close()
var loop := TapeExpression
TapeExpression
TapeExpression
TapeExpression
"
TapeExpression
),
"notequal",
TapeExpression
TapeExpression
theTape := theBrackets
theTape
input()
theTape
TapeExpression
"setAt",
TapeExpression
TapeExpression
TapeExpression
"readChar"
)))
output()
theTape
TapeExpression
"write",
TapeExpression
TapeExpression
"
TapeExpression
)))
next()
theTape
"ptr",
TapeExpression
TapeExpression
"add",
TapeExpression
previous()
theTape
"ptr",
TapeExpression
TapeExpression
"subtract",
TapeExpression
increase()
theTape
TapeExpression
"setAt",
TapeExpression
TapeExpression
TapeExpression
"
TapeExpression
TapeExpression
TapeExpression
"toInt",
TapeExpression
TapeExpression
"
TapeExpression
),
"add",
TapeExpression
decrease()
theTape
TapeExpression
"setAt",
TapeExpression
TapeExpression
TapeExpression
"
TapeExpression
TapeExpression
TapeExpression
"toInt",
TapeExpression
TapeExpression
"
TapeExpression
),
"subtract",
TapeExpression
get()
var program := TapeExpression
TapeExpression
"eval",
TapeExpression
TapeExpression
var o := (program
^(
}
const bf_program = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>."
{
console
.loadPath:"asmrules.es"
▲ var bfAssemblyProgram := scriptEngine
▲ var bfProgram := TapeAssembler new(bfAssemblyProgram); get.
▲ var bfTape := Array new:1024; populate(:n)<int>($0).
▲ bfProgram(bfTape).
▲].</lang>
The grammar:
<lang elena>[[
Line 202 ⟶ 201:
{{out}}
<pre>
ELENA VM
Initializing...
Done...
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
|