Example #1
0
 public void CompileComplexInitializer(ComplexInitializer cplxInit)
 {
     textWriter.Write("(");
     cplxInit.RealPartInitializer.AcceptCompiler(this);
     textWriter.Write(", ");
     cplxInit.ImaginaryPartInitializer.AcceptCompiler(this);
     textWriter.Write(")");
 }
Example #2
0
        public void CompileComplexInitializer(ComplexInitializer cplxInit)
        {
            XmlElement tmpElement      = document.CreateElement("ComplexInitializer");
            XmlElement previousElement = currentElement;

            currentElement = document.CreateElement("RealPartInitializer");
            cplxInit.RealPartInitializer.AcceptCompiler(this);
            currentElement = document.CreateElement("ImaginaryPartInitializer");
            cplxInit.ImaginaryPartInitializer.AcceptCompiler(this);
            currentElement = previousElement;
            currentElement.AppendChild(tmpElement);
        }
Example #3
0
        /// <summary>
        /// Recognizes expressions that start with an opening parenthesis.
        /// </summary>
        /// <returns>
        /// A <see cref="Conversion"/>, a <see cref="ComplexInitializer"/>
        /// or simply a parenthesized <see cref="Expression"/>
        /// </returns>
        protected Expression AtomStartingWithLParen()
        {
            Token first = Match(TokenID.LeftParenthesis);

            if (TryMatch(TokenID.TypeName))
            {
                int k;
                if (LookAhead(TokenID.RightParenthesis, out k))
                {
                    string typeName = token.ToString();
                    Consume(k);

                    var converted  = Required <Expression>(Expression, Resources.ExpressionRequired);
                    var conversion = new Conversion(converted, typeName);
                    conversion.SetLocation(first.Start, converted.End);

                    return(conversion);
                }
            }

            var expr = Required <Expression>(Expression, Resources.ExpressionRequired);

            SkipComments();
            Token last = token;

            switch (last.TokenID)
            {
            case TokenID.Comma:
                Consume(1);
                var expr1 = Required <Expression>(Expression, Resources.ExpressionRequired);
                last = Match(TokenID.RightParenthesis);
                expr = new ComplexInitializer(expr, expr1);
                break;

            case TokenID.RightParenthesis:
                Consume(1);
                expr.IsParenthesized = true;
                break;

            default:
                throw new ParseException(FileName, last, Resources.MissingClosingParen);
            }

            expr.SetLocation(first.Start, last.End);

            return(expr);
        }