AjTalk.Model.ModelParser.ParseExpression C# (CSharp) Method

ParseExpression() public method

public ParseExpression ( ) : IExpression
return IExpression
        public IExpression ParseExpression()
        {
            Token token = this.NextToken();

            if (token == null)
                return null;

            if (token.Type == TokenType.Operator && token.Value == "^")
                return new ReturnExpression(this.ParseExpression());

            this.PushToken(token);

            IExpression expression = this.ParseHeadExpression();

            if (expression is PrimitiveExpression)
                return expression;

            return this.ParseExpression(expression);
        }

Same methods

ModelParser::ParseExpression ( IExpression target ) : IExpression

Usage Example

コード例 #1
0
        public void CompileBlockWithParameter()
        {
            ModelParser parser = new ModelParser("[ :a | a doSomething ]");
            this.compiler.CompileExpression(parser.ParseExpression());

            Assert.IsNotNull(this.block);
            Assert.AreEqual(0, this.block.NoGlobalNames);
            Assert.AreEqual(0, this.block.NoLocals);
            Assert.AreEqual(1, this.block.NoConstants);
            Assert.IsNotNull(this.block.ByteCodes);
            Assert.AreEqual(2, this.block.ByteCodes.Length);
            Assert.AreEqual(0, this.block.Arity);

            object constant = this.block.GetConstant(0);

            Assert.IsNotNull(constant);
            Assert.IsInstanceOfType(constant, typeof(Block));

            var newblock = (Block)constant;
            Assert.AreEqual(0, newblock.NoGlobalNames);
            Assert.AreEqual(0, newblock.NoLocals);
            Assert.AreEqual(1, newblock.NoConstants);
            Assert.IsNotNull(newblock.ByteCodes);
            Assert.AreEqual(5, newblock.ByteCodes.Length);
            Assert.AreEqual(1, newblock.Arity);
        }
All Usage Examples Of AjTalk.Model.ModelParser::ParseExpression