예제 #1
0
 void XmlNestedContent(out XmlExpression expr)
 {
     XmlExpression tmpExpr = null; Location start = la.Location;
     switch (la.kind) {
     case 16: {
     Get();
     tmpExpr = new XmlContentExpression(t.val, XmlContentType.Text);
     break;
     }
     case 18: {
     Get();
     tmpExpr = new XmlContentExpression(t.val, XmlContentType.CData);
     break;
     }
     case 17: {
     Get();
     tmpExpr = new XmlContentExpression(t.val, XmlContentType.Comment);
     break;
     }
     case 19: {
     Get();
     tmpExpr = new XmlContentExpression(t.val, XmlContentType.ProcessingInstruction);
     break;
     }
     case 12: {
     Get();
     Expression innerExpression;
     Expr(out innerExpression);
     Expect(13);
     tmpExpr = new XmlEmbeddedExpression() { InlineVBExpression = innerExpression };
     break;
     }
     case 10: {
     XmlElement(out tmpExpr);
     break;
     }
     default: SynErr(289); break;
     }
     if (tmpExpr.StartLocation.IsEmpty)
         tmpExpr.StartLocation = start;
     if (tmpExpr.EndLocation.IsEmpty)
         tmpExpr.EndLocation = t.EndLocation;
     expr = tmpExpr;
 }
예제 #2
0
 void XmlElement(out XmlExpression expr)
 {
     XmlElementExpression el = new XmlElementExpression();
     Expect(10);
     el.StartLocation = t.Location;
     if (la.kind == 12) {
     Get();
     Expression innerExpression;
     Expr(out innerExpression);
     Expect(13);
     el.NameExpression = new XmlEmbeddedExpression() { InlineVBExpression = innerExpression };
     } else if (StartOf(5)) {
     Identifier();
     el.XmlName = t.val;
     } else SynErr(287);
     while (StartOf(37)) {
     XmlAttribute(el.Attributes);
     }
     if (la.kind == 14) {
     Get();
     el.EndLocation = t.EndLocation;
     } else if (la.kind == 11) {
     Get();
     while (StartOf(38)) {
         XmlExpression child;
         XmlNestedContent(out child);
         el.Children.Add(child);
     }
     Expect(15);
     while (StartOf(39)) {
         Get();
     }
     Expect(11);
     el.EndLocation = t.EndLocation;
     } else SynErr(288);
     expr = el;
 }