| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
8 files changed, 27 insertions, 24 deletions
| diff --git a/src/core/src/tonkadur/Main.java b/src/core/src/tonkadur/Main.java index ea02801..62879d2 100644 --- a/src/core/src/tonkadur/Main.java +++ b/src/core/src/tonkadur/Main.java @@ -59,6 +59,8 @@ public class Main           tp.post_fate_parsing(fate_world);        } +      fate_world.assert_sanity(); +        wyrd_world = new tonkadur.wyrd.v1.lang.World();        for (final TonkadurPlugin tp: plugins) diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index fffe6a3..81b63e2 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -100,8 +100,9 @@ returns [List<Instruction> result]  first_level_fate_instr:     DEFINE_SEQUENCE_KW        new_reference_name +      WS*        ( -         L_PAREN WS+ variable_list WS* R_PAREN +         L_PAREN WS* variable_list WS* R_PAREN           {              final Map<String, Variable> variable_map; @@ -817,6 +818,8 @@ returns [Instruction result]              ($new_reference_name.result),              ($general_fate_sequence.result)           ); + +      variable_map.remove(($new_reference_name.result));     }     | EVENT_KW WORD WS+ value_list WS* R_PAREN diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java index 961fd10..27f382d 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java @@ -1677,6 +1677,8 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        parameter_ccs = new ArrayList<ComputationCompiler>();        parameters = new ArrayList<Computation>(); +      compiler.assembler().add_fixed_name_label(n.get_sequence_name()); +        for        (           final tonkadur.fate.v1.lang.meta.Computation param: n.get_parameters() @@ -1737,6 +1739,8 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        parameter_ccs = new ArrayList<ComputationCompiler>();        parameters = new ArrayList<Computation>(); +      compiler.assembler().add_fixed_name_label(n.get_sequence_name()); +        for        (           final tonkadur.fate.v1.lang.meta.Computation param: n.get_parameters() @@ -1763,7 +1767,10 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        (           compiler.registers().get_jump_to_context_instructions           ( -            compiler.assembler().get_label_constant(n.get_sequence_name()) +            compiler.assembler().get_label_constant +            ( +               n.get_sequence_name() +            )           )        ); diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java index 155f6d5..5607450 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java @@ -18,6 +18,7 @@ import tonkadur.wyrd.v1.lang.meta.Instruction;  import tonkadur.wyrd.v1.lang.computation.Address;  import tonkadur.wyrd.v1.lang.computation.RelativeAddress;  import tonkadur.wyrd.v1.lang.computation.Constant; +import tonkadur.wyrd.v1.lang.computation.Cast;  import tonkadur.wyrd.v1.lang.computation.ValueOf;  import tonkadur.wyrd.v1.lang.computation.Size; @@ -151,7 +152,7 @@ public class RegisterManager              new RelativeAddress              (                 pc_stack.get_address(), -               new Size(pc_stack.get_address()), +               new Cast(new Size(pc_stack.get_address()), Type.STRING),                 Type.INT              ),              leave_to @@ -200,7 +201,7 @@ public class RegisterManager           new RelativeAddress           (              pc_stack.get_address(), -            new Size(pc_stack.get_address()), +            new Cast(new Size(pc_stack.get_address()), Type.STRING),              Type.INT           ); diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java index 3327e2c..973806a 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java @@ -156,15 +156,6 @@ class StackableRegisterContext extends RegisterContext           )        ); -      result.add -      ( -         new SetValue -         ( -            context_stack_level.get_address(), -            Operation.minus(context_stack_level.get_value(), Constant.ONE) -         ) -      ); -        return result;     } diff --git a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java index 1d3122e..3210f73 100644 --- a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java @@ -142,7 +142,7 @@ public class ComputationCompiler implements ComputationVisitor        }     } -   public void visit_ref (final Ref n) +   public void visit_address (final Address n)     throws Throwable     {        final ComputationCompiler cc; @@ -153,12 +153,12 @@ public class ComputationCompiler implements ComputationVisitor        result = new JSONObject(); -      result.put("category", "ref"); +      result.put("category", "address");        result.put("target_type", Translator.compile_type(n.get_type()));        result.put("address", cc.get_result());     } -   public void visit_relative_ref (final RelativeRef n) +   public void visit_relative_address (final RelativeAddress n)     throws Throwable     {        final ComputationCompiler cc, param_cc; @@ -171,7 +171,7 @@ public class ComputationCompiler implements ComputationVisitor        result = new JSONObject(); -      result.put("category", "relative_ref"); +      result.put("category", "relative_address");        result.put("type", Translator.compile_type(n.get_type()));        result.put("base", cc.get_result());        result.put("extra", param_cc.get_result()); diff --git a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java index 8f7913b..8376be4 100644 --- a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java @@ -103,7 +103,7 @@ public class InstructionCompiler implements InstructionVisitor        cc = new ComputationCompiler(); -      n.get_reference().get_visited_by(cc); +      n.get_address().get_visited_by(cc);        result = new JSONObject(); @@ -142,7 +142,7 @@ public class InstructionCompiler implements InstructionVisitor        ref_cc = new ComputationCompiler();        val_cc = new ComputationCompiler(); -      n.get_reference().get_visited_by(ref_cc); +      n.get_address().get_visited_by(ref_cc);        n.get_value().get_visited_by(val_cc);        result = new JSONObject(); diff --git a/src/json-export/src/tonkadur/jsonexport/Translator.java b/src/json-export/src/tonkadur/jsonexport/Translator.java index cc22e7c..6d7f60e 100644 --- a/src/json-export/src/tonkadur/jsonexport/Translator.java +++ b/src/json-export/src/tonkadur/jsonexport/Translator.java @@ -10,7 +10,7 @@ import org.json.simple.JSONObject;  import tonkadur.wyrd.v1.lang.World;  import tonkadur.wyrd.v1.lang.type.*; -import tonkadur.wyrd.v1.lang.Variable; +import tonkadur.wyrd.v1.lang.Register;  import tonkadur.wyrd.v1.lang.meta.Instruction; @@ -47,16 +47,15 @@ public class Translator        for        ( -         final Map.Entry<String, Variable> e: -            wyrd_world.get_variables().entrySet() +         final Register e: wyrd_world.get_registers()        )        {           final JSONObject obj;           obj = new JSONObject(); -         obj.put("name", e.getKey()); -         obj.put("type", compile_type(e.getValue().get_type())); +         obj.put("name", e.get_name()); +         obj.put("type", compile_type(e.get_type()));           result.add(obj);        } | 


