AjTalk.Model.ModelParser.ParseExpressions C# (CSharp) Méthode

ParseExpressions() public méthode

public ParseExpressions ( ) : IEnumerable
Résultat IEnumerable
        public IEnumerable<IExpression> ParseExpressions()
        {
            // TODO Quick hack to skip initial dots
            while (this.TryParseDot())
            {
            }

            IExpression expression = this.ParseExpression();

            if (expression == null)
                return null;

            List<IExpression> expressions = new List<IExpression>();
            expressions.Add(expression);

            if ((this.TryParseDot() || expression is PrimitiveExpression) && this.IsNotEndOfInput())
            {
                IExpression expr = this.ParseExpression();

                if (expr != null)
                {
                    expressions.Add(expr);

                    while (this.TryParseDot() && this.IsNotEndOfInput())
                    {
                        expr = this.ParseExpression();

                        if (expr == null)
                            break;

                        expressions.Add(expr);
                    }
                }
            }

            Token token = this.NextToken();

            if (token != null)
            {
                // TODO refactor
                if (token.Type != TokenType.Punctuation || (token.Value != "]" && token.Value != ")" && token.Value != "}"))
                    throw new ParserException(string.Format("Unexpected '{0}'", token.Value));

                this.PushToken(token);
            }

            return expressions;
        }

Usage Example

 public void CompileAndExecuteTwoSimpleCommand()
 {
     ModelParser parser = new ModelParser("a := 1. b := 2");
     this.compiler.CompileExpressions(parser.ParseExpressions());
     Machine machine = new Machine();
     this.block.Execute(machine, null);
     Assert.AreEqual(1, machine.GetGlobalObject("a"));
     Assert.AreEqual(2, machine.GetGlobalObject("b"));
 }
All Usage Examples Of AjTalk.Model.ModelParser::ParseExpressions