Beispiel #1
0
        public static IExpressionBlock ParseBlock(IBlockLiteral tokenBlock, IContext parentContext)
        {
            var context = new Context {
                Parent = parentContext
            };

            return(ParseBlockWithContext(tokenBlock, context));
        }
Beispiel #2
0
 void AssertBlock(IBlockLiteral expected, IBlockLiteral actual, string label)
 {
     Assert.That(actual.Lines.Count, Is.EqualTo(expected.Lines.Count), $"{label}.Lines.Count");
     for (var i = 0; i < actual.Lines.Count; i++)
     {
         AssertLine(expected.Lines[i], actual.Lines[i], $"{label}.Lines[{i}]");
     }
 }
Beispiel #3
0
 static TokenData BlockStart(int column, IBlockLiteral block = null)
 {
     return(new TokenData {
         Type = Token.BlockStartIndentation,
         Range = new TextFileRange {
             End = new TextPosition {
                 Column = column
             }
         },
         Data = block
     });
 }
Beispiel #4
0
        public static IExpressionBlock ParseBlockWithContext(IBlockLiteral tokenBlock, IContext context)
        {
            var block = new ExpressionBlock();

            foreach (var tokenLine in tokenBlock.Lines)
            {
                using (var it = tokenLine.Tokens.GetEnumerator()) {
                    if (it.MoveNext())
                    {
                        var done       = false;
                        var expression = ParseLineExpression(it, context, ref done);
                        if (expression != null)
                        {
                            block.Expressions.Add(expression);
                        }
                    }
                }
            }
            return(block);
        }