Anonymous user
Execute Brain****/Elena: Difference between revisions
m
no edit summary
m (Fixed syntax highlighting.) |
imported>Arakov mNo edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1:
ELENA
<syntaxhighlight lang="elena">import system'collections;
import system'routines;
Line 11:
class TapeAssembler
{
Stack
List<Expression>
constructor()
{
Expression.Constant(0)));
}
Line 31:
open()
{
}
Line 47:
Expression.Constant($0)
),
}
input()
{
)
)
Line 70:
output()
{
Expression.MessageCall(
new Message("write[2]"),
Line 76:
Expression.MessageCall(
new Message("at[2]"),
Expression.Variable
Expression.Variable
)
)
Line 85:
next()
{
Expression.Assigning(
Expression.MessageCall(
new Message("add[2]"),
Expression.Variable
Expression.Constant(1))))
}
Line 96:
previous()
{
Expression.Assigning(
Expression.MessageCall(
new Message("subtract[2]"),
Expression.Variable
Expression.Constant(1))))
}
Line 107:
increase()
{
Expression.MessageCall(
new Message("setAt[3]"),
Line 119:
Expression.MessageCall(
new Message("toInt[2]"),
Expression.Constant(
Expression.MessageCall(
new Message("at[2]"),
Line 134:
decrease()
{
Expression.MessageCall(
new Message("setAt[3]"),
Line 146:
Expression.MessageCall(
new Message("toInt[2]"),
Expression.Constant(
Expression.MessageCall(
new Message("at[2]"),
Line 161:
compiled()
{
var program := DynamicSingleton.
Expression.Method(
"eval",
CodeblockExpression.new
).compile();
^(tape){ program.eval(tape) }
Line 179 ⟶ 180:
var bfProgram := TapeAssembler.load(bfAssemblyProgram).compiled();
var bfTape := Array.allocate(1024).populate::(n => $0);
console.writeLine(bf_program);
bfProgram(bfTape)
Line 188 ⟶ 191:
#grammar cf
#define start ::=
<=
system'dynamic'DynamicTape (
system'dynamic'AllocFunction ( "1" )
system'dynamic'LocalFunction ( "2" ) => command commands
<= ) =>;
#define start ::= $eof;
Line 195 ⟶ 204:
#define commands ::= $eof;
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define command ::= <= system'dynamic'
#define comment ::= " " comments;
|