Exemplo n.º 1
0
        internal static ErlangListComprehensionGeneratorSyntax Parse(TokenBuffer buffer, ParseStyle style)
        {
            var start      = buffer.Offset;
            var expression = ParseExpression(buffer, style);

            if (expression != null)
            {
                var next = buffer.Peek();
                if (ErlangToken.IsLeftArrow(next))
                {
                    buffer.Advance();
                    var arrow    = (ErlangLessMinusToken)next;
                    var function = ParseExpression(buffer, style);
                    if (function != null)
                    {
                        ErlangCommaToken comma = null;
                        next = buffer.Peek();
                        if (ErlangToken.IsComma(next))
                        {
                            buffer.Advance();
                            comma = (ErlangCommaToken)next;
                        }

                        return(new ErlangListComprehensionGeneratorSyntax(expression, arrow, function, comma));
                    }
                }
            }

            buffer.SetOffset(start);
            return(null);
        }