Exemple #1
0
 public override void Compile(CompilerBase state)
 {
     mRow.Compile(state);
     mCol.Compile(state);
     Value.Compile(state);
     state.InsertARRAYWRITE(Name);
 }
Exemple #2
0
            public override void Compile(CompilerBase state)
            {
                var cid = Guid.NewGuid();
                var end = $"{cid}-function-end";

                state.InsertJMP(end);
                state.FunctionDefine(Name, Parameters.Length, 0);
                state.EnterFunction(Name);
                state.InsertLabel($"<{Name}>");
                var iadstk = state.InsertALLOCDSTK();

                foreach (var p in Parameters)
                {
                    state.VariableDefine(p);
                }
                foreach (var p in Parameters)
                {
                    state.InsertSD(p);
                }

                mBlockStatement.Compile(state);
                state.InsertLC(new BooleanValue(false));
                state.InsertRET();
                iadstk.Size = state.CurrentScopeVariableCount;
                state.ExitFunction();
                state.InsertLabel(end);
            }
 public NatashaCSharpEngine(string assemblyName)
 {
     Syntax   = SyntaxComponent.GetSyntax();
     Compiler = CompilerComponent.GetCompiler();
     Compiler.AssemblyName        = assemblyName;
     Compiler.CompileFailedEvent += NatashaEngine_CompileFailedHandler;
 }
Exemple #4
0
 public override void Compile(CompilerBase state)
 {
     foreach (var s in mStatements)
     {
         s.Compile(state);
     }
 }
Exemple #5
0
 public override void Compile(CompilerBase state)
 {
     Row.Compile(state);
     Col.Compile(state);
     state.InsertLC(Value);
     state.InsertARRAYMAKE();
 }
Exemple #6
0
            public override void Compile(CompilerBase state)
            {
                var cid        = Guid.NewGuid();
                var beginLabel = $"{cid}-begin";
                var endLabel   = $"{cid}-end";
                var indexName  = string.IsNullOrEmpty(IndexName)?$"<{cid}-index>": IndexName;

                state.EnterLoop(beginLabel, endLabel);
                state.VariableDefine(indexName);
                state.InsertLC(new IntegerValue(0));
                state.InsertSD(indexName);

                state.InsertLabel(beginLabel);
                state.InsertLD(indexName);
                mCount.Compile(state);
                state.InsertLT();
                state.InsertJMPN(endLabel);
                mLoopBlock.Compile(state);
                state.InsertLD(indexName);
                state.InsertLC(new IntegerValue(1));
                state.InsertADD();
                state.InsertSD(indexName);
                state.InsertJMP(beginLabel);
                state.InsertLabel(endLabel);
                state.ExitLoop();
            }
Exemple #7
0
 public override void Compile(CompilerBase state)
 {
     foreach (var p in mParameters.Reverse())
     {
         p.Compile(state);
     }
     state.InsertCALL(Name, mParameters.Length);
 }
 public NatashaCSharpEngine(string name)
 {
     Syntax   = SyntaxManagement.GetSyntax();
     Compiler = CompilerManagement.GetCompiler();
     Compiler.AssemblyName = name;
     Compiler.StreamCompileFailedHandler += NatashaEngine_StreamCompileFailedHandler;
     Compiler.FileCompileFailedHandler   += NatashaEngine_FileCompileFailedHandler;;
 }
Exemple #9
0
 public Resource(ManagedProjectBase project, FileInfo resourceSourceFile, string resourceSourceFileRelativePath, string dependentFile, SolutionTask solutionTask, GacCache gacCache)
 {
     _project                        = project;
     _resourceSourceFile             = resourceSourceFile;
     _resourceSourceFileRelativePath = resourceSourceFileRelativePath;
     _dependentFile                  = dependentFile;
     _solutionTask                   = solutionTask;
     _culture                        = CompilerBase.GetResourceCulture(resourceSourceFile.FullName,
                                                                       dependentFile);
 }
Exemple #10
0
 public override void Compile(CompilerBase state)
 {
     if (mExpression != null)
     {
         mExpression.Compile(state);
     }
     else
     {
         state.InsertLC(new BooleanValue(false));
     }
     state.InsertRET();
 }
Exemple #11
0
            public void Compile(CompilerBase state)
            {
                state.EnterFunction("<Program>");
                var iadstk = state.InsertALLOCDSTK();

                foreach (var s in mStatements)
                {
                    s.Compile(state);
                }
                state.InsertLC(new BooleanValue(false));
                state.InsertRET();
                iadstk.Size = state.CurrentScopeVariableCount;
                state.ExitFunction();
            }
Exemple #12
0
            public override void Compile(CompilerBase state)
            {
                var cid        = Guid.NewGuid();
                var beginLabel = $"{cid}-begin";
                var endLabel   = $"{cid}-end";

                state.EnterLoop(beginLabel, endLabel);
                state.InsertLabel(beginLabel);
                mConditional.Compile(state);
                state.InsertJMPN(endLabel);
                mLoopBlock.Compile(state);
                state.InsertJMP(beginLabel);
                state.InsertLabel(endLabel);
                state.ExitLoop();
            }
Exemple #13
0
            public override void Compile(CompilerBase state)
            {
                var cid        = Guid.NewGuid();
                var falseLabel = $"{cid}-false";
                var endLabel   = $"{cid}-end";

                mConditional.Compile(state);
                if (mFalseBlock != null)
                {
                    state.InsertJMPN(falseLabel);
                }
                else
                {
                    state.InsertJMPN(endLabel);
                }
                mTrueBlock.Compile(state);
                state.InsertJMP(endLabel);
                if (mFalseBlock != null)
                {
                    state.InsertLabel(falseLabel);
                    mFalseBlock.Compile(state);
                }
                state.InsertLabel(endLabel);
            }
Exemple #14
0
 public override void Compile(CompilerBase state)
 {
     mRow.Compile(state);
     mCol.Compile(state);
     state.InsertARRAYREAD(Name);
 }
Exemple #15
0
 public abstract void Compile(CompilerBase state);
Exemple #16
0
 public override void Compile(CompilerBase state)
 {
     state.InsertLC(Value);
 }
Exemple #17
0
 public override void Compile(CompilerBase state)
 {
     state.InsertLD(Name);
 }
Exemple #18
0
 public override void Compile(CompilerBase state)
 {
     mExpression1.Compile(state);
     mExpression2.Compile(state);
     state.InsertOR();
 }
Exemple #19
0
 public override void Compile(CompilerBase state)
 {
     state.VariableDefine(Name);
     Value.Compile(state);
     state.InsertSD(Name);
 }
Exemple #20
0
 public override void Compile(CompilerBase state)
 {
     Value.Compile(state);
     state.InsertSD(Name);
 }
Exemple #21
0
            public override void Compile(CompilerBase state)
            {
                var endLabel = state.CurrentLoopEndLabel;

                state.InsertJMP(endLabel);
            }