OSDN Git Service

Release 0.0.2
[mt-acme/Grass.git] / tmpl / grass.mtml
1 <mt:Include module="parse" name="code" source="$contents" />
2
3 <mt:Include module="in" name="in" />
4 <mt:Include module="char" name="char" char_code="119"/>
5 <mt:Include module="succ" name="succ" />
6 <mt:Include module="out" name="out" />
7 <mt:SetVar name="env" function="undef" />
8 <mt:SetVar name="env" function="push" value="$in" />
9 <mt:SetVar name="env" function="push" value="$char" />
10 <mt:SetVar name="env" function="push" value="$succ" />
11 <mt:SetVar name="env" function="push" value="$out" />
12
13 <mt:SetVar name="dump" function="undef" />
14 <mt:SetVar name="tmp_dump_1" function="undef" />
15 <mt:Include module="new_array" name="tmp_dump_1_1" />
16 <mt:Include module="new_array" name="tmp_dump_1_2" />
17 <mt:SetVar name="tmp_dump_1" function="push" value="$tmp_dump_1_1" />
18 <mt:SetVar name="tmp_dump_1" function="push" value="$tmp_dump_1_2" />
19 <mt:SetVar name="dump" function="push" value="$tmp_dump_1" />
20
21 <mt:SetVar name="tmp_dump_1" function="undef" />
22 <mt:SetVar name="tmp_dump_2" function="undef" />
23 <mt:Include module="app" name="app" m="1" n="1" />
24 <mt:Include module="new_array" name="tmp_dump_2_1" />
25 <mt:SetVar name="tmp_dump_2" function="push" value="$app" />
26 <mt:SetVar name="tmp_dump_1" function="push" value="$tmp_dump_2" />
27 <mt:SetVar name="tmp_dump_1" function="push" value="$tmp_dump_2_1" />
28 <mt:SetVar name="dump" function="push" value="$tmp_dump_1" />
29
30 <mt:SetVar name="machine" function="undef" />
31 <mt:SetVar name="machine{code}" value="$code" />
32 <mt:SetVar name="machine{env}" value="$env" />
33 <mt:SetVar name="machine{dump}" value="$dump" />
34
35 <mt:SetVarTemplate name="eval">
36 <mt:Var name="machine{code}" setvar="code" />
37 <mt:Var name="machine{env}" setvar="env" />
38 <mt:Var name="machine{dump}" setvar="dump" />
39
40 <mt:Var name="code" function="shift" setvar="insn" />
41 <mt:If name="insn">
42 <mt:SetVar name="insn{machine}" value="$machine" />
43 <mt:SetVar name="self" value="$insn" />
44 <mt:SetVarBlock name="method"><mt:Var name="insn{class}" />::eval</mt:SetVarBlock>
45 <mt:Var name="$method" />
46 <mt:Var name="eval" trim="1" />
47 <mt:ElseIf name="dump[0]">
48 <mt:Var name="env[-1]" setvar="ret" />
49 <mt:Var name="dump" function="pop" setvar="tmp_eval" />
50 <mt:Var name="tmp_eval[0]" setvar="code" />
51 <mt:Var name="tmp_eval[1]" setvar="env" />
52 <mt:SetVar name="env" function="push" value="$ret" />
53 <mt:SetVar name="machine{code}" value="$code" />
54 <mt:SetVar name="machine{env}" value="$env" />
55 <mt:Var name="eval" trim="1" />
56 </mt:If>
57 </mt:SetVarTemplate>
58 <mt:Var name="eval" trim="1" />