Exemple #1
0
        Statement ParseCompoundStatement(TokenRange toks)
        {
            var first = toks.First(NonWhitespace);

            if (first.Value == "{")
            {
                var inBraces = first.GetMatchingRangeIn(toks);
                if (!range(inBraces.End, toks.End).Consume("}").All(Whitespace))
                {
                    throw new Error(inBraces.Last().SourceLine, "Unexpected tokens after compound statement");
                }
                return(ParseCodeBlock(inBraces));
            }
            else
            {
                List <Statement> statements = new List <Statement>();
                ParseStatement(toks.Skip(1), statements);
                return(statements[0]);
            }
        }