public void CompileComplexInitializer(ComplexInitializer cplxInit) { textWriter.Write("("); cplxInit.RealPartInitializer.AcceptCompiler(this); textWriter.Write(", "); cplxInit.ImaginaryPartInitializer.AcceptCompiler(this); textWriter.Write(")"); }
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); }
/// <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); }