CompileClassMethod() public method

public CompileClassMethod ( IBehavior cls ) : Method
cls IBehavior
return AjTalk.Language.Method
コード例 #1
0
ファイル: ParserTests.cs プロジェクト: ajlopez/AjTalk
        internal static IClass CompileClass(string clsname, string[] varnames, string[] methods, string[] clsmethods)
        {
            Machine machine = new Machine();
            IClass cls = machine.CreateClass(clsname);

            if (varnames != null)
            {
                foreach (string varname in varnames)
                {
                    cls.DefineInstanceVariable(varname);
                }
            }

            if (methods != null)
            {
                foreach (string method in methods)
                {
                    Parser compiler = new Parser(method);
                    cls.DefineInstanceMethod(compiler.CompileInstanceMethod(cls));
                }
            }

            if (clsmethods != null)
            {
                foreach (string method in clsmethods)
                {
                    Parser compiler = new Parser(method);
                    cls.DefineClassMethod(compiler.CompileClassMethod(cls));
                }
            }

            return cls;
        }
コード例 #2
0
ファイル: EvaluateTests.cs プロジェクト: ajlopez/AjTalk
 private void CompileClassMethod(IBehavior cls, string text, Machine machine)
 {
     Parser parser = new Parser(text);
     cls.DefineClassMethod(parser.CompileClassMethod(cls));
 }
コード例 #3
0
ファイル: EvaluateTests.cs プロジェクト: ajlopez/AjTalk
 public void EvaluateSelfAsReturnInMethodWithoutReturn()
 {
     var cls = this.machine.CreateClass("MyClass");
     this.machine.SetCurrentEnvironmentObject(cls.Name, cls);
     Parser parser = new Parser("mymethod [1] value");
     cls.DefineClassMethod(parser.CompileClassMethod(cls));
     Assert.AreEqual(cls, this.Evaluate("MyClass mymethod"));
 }
コード例 #4
0
ファイル: EvaluateTests.cs プロジェクト: ajlopez/AjTalk
 public void EvaluateMethodWithInternalReturnIfFalse()
 {
     IClass testclass = this.machine.CreateClass("Test");
     this.machine.SetCurrentEnvironmentObject("Test", testclass);
     Parser parser = new Parser("test false ifFalse: [^1]. ^2");
     Method method = parser.CompileClassMethod(testclass);
     testclass.DefineClassMethod(method);
     Assert.AreEqual(1, this.Evaluate("Test test"));
 }
コード例 #5
0
ファイル: EvaluateTests.cs プロジェクト: ajlopez/AjTalk
 public void EvaluateBlockWithIntegerInMethod()
 {
     var cls = this.machine.CreateClass("MyClass");
     this.machine.SetCurrentEnvironmentObject(cls.Name, cls);
     Parser parser = new Parser("mymethod ^[1] value");
     cls.DefineClassMethod(parser.CompileClassMethod(cls));
     Assert.AreEqual(1, this.Evaluate("MyClass mymethod"));
 }
コード例 #6
0
ファイル: SimpleCompiler.cs プロジェクト: ajlopez/AjTalk
 public Method CompileClassMethod(string text, IBehavior cls)
 {
     Parser parser = new Parser(text);
     return parser.CompileClassMethod(cls);
 }