Author: mkrueger
Date: 2008-01-03 04:34:53 -0500 (Thu, 03 Jan 2008)
New Revision: 92161
Modified:
trunk/monodevelop/main/src/core/NRefactory/Project/Src/Parser/CSharp/Parser.cs
Log:
* Src/Parser/CSharp/Parser.cs: Generated parser.
Modified:
trunk/monodevelop/main/src/core/NRefactory/Project/Src/Parser/CSharp/Parser.cs
===================================================================
---
trunk/monodevelop/main/src/core/NRefactory/Project/Src/Parser/CSharp/Parser.cs
2008-01-03 09:22:59 UTC (rev 92160)
+++
trunk/monodevelop/main/src/core/NRefactory/Project/Src/Parser/CSharp/Parser.cs
2008-01-03 09:34:53 UTC (rev 92161)
@@ -829,39 +829,39 @@
}
void TypeParameterList(
-#line 2074 "cs.ATG"
+#line 2072 "cs.ATG"
List<TemplateDefinition> templates) {
-#line 2076 "cs.ATG"
+#line 2074 "cs.ATG"
AttributeSection section;
List<AttributeSection> attributes = new
List<AttributeSection>();
Expect(23);
while (la.kind == 18) {
AttributeSection(
-#line 2080 "cs.ATG"
+#line 2078 "cs.ATG"
out section);
-#line 2080 "cs.ATG"
+#line 2078 "cs.ATG"
attributes.Add(section);
}
Expect(1);
-#line 2081 "cs.ATG"
+#line 2079 "cs.ATG"
templates.Add(new TemplateDefinition(t.val, attributes));
while (la.kind == 14) {
lexer.NextToken();
while (la.kind == 18) {
AttributeSection(
-#line 2082 "cs.ATG"
+#line 2080 "cs.ATG"
out section);
-#line 2082 "cs.ATG"
+#line 2080 "cs.ATG"
attributes.Add(section);
}
Expect(1);
-#line 2083 "cs.ATG"
+#line 2081 "cs.ATG"
templates.Add(new TemplateDefinition(t.val,
attributes));
}
Expect(22);
@@ -894,25 +894,25 @@
}
void TypeParameterConstraintsClause(
-#line 2087 "cs.ATG"
+#line 2085 "cs.ATG"
List<TemplateDefinition> templates) {
-#line 2088 "cs.ATG"
+#line 2086 "cs.ATG"
string name = ""; TypeReference type;
Expect(1);
-#line 2090 "cs.ATG"
+#line 2088 "cs.ATG"
if (t.val != "where") Error("where expected");
Expect(1);
-#line 2091 "cs.ATG"
+#line 2089 "cs.ATG"
name = t.val;
Expect(9);
TypeParameterConstraintsClauseBase(
-#line 2093 "cs.ATG"
+#line 2091 "cs.ATG"
out type);
-#line 2094 "cs.ATG"
+#line 2092 "cs.ATG"
TemplateDefinition td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -925,10 +925,10 @@
while (la.kind == 14) {
lexer.NextToken();
TypeParameterConstraintsClauseBase(
-#line 2103 "cs.ATG"
+#line 2101 "cs.ATG"
out type);
-#line 2104 "cs.ATG"
+#line 2102 "cs.ATG"
td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -1262,33 +1262,33 @@
}
void TypeName(
-#line 2017 "cs.ATG"
+#line 2015 "cs.ATG"
out TypeReference typeRef, bool canBeUnbound) {
-#line 2018 "cs.ATG"
+#line 2016 "cs.ATG"
List<TypeReference> typeArguments = null;
string alias = null;
string qualident;
if (
-#line 2023 "cs.ATG"
+#line 2021 "cs.ATG"
la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) {
lexer.NextToken();
-#line 2024 "cs.ATG"
+#line 2022 "cs.ATG"
alias = t.val;
Expect(10);
}
Qualident(
-#line 2027 "cs.ATG"
+#line 2025 "cs.ATG"
out qualident);
if (la.kind == 23) {
TypeArgumentList(
-#line 2028 "cs.ATG"
+#line 2026 "cs.ATG"
out typeArguments, canBeUnbound);
}
-#line 2030 "cs.ATG"
+#line 2028 "cs.ATG"
if (alias == null) {
typeRef = new TypeReference(qualident, typeArguments);
} else if (alias == "global") {
@@ -1299,22 +1299,22 @@
}
while (
-#line 2039 "cs.ATG"
+#line 2037 "cs.ATG"
DotAndIdent()) {
Expect(15);
-#line 2040 "cs.ATG"
+#line 2038 "cs.ATG"
typeArguments = null;
Qualident(
-#line 2041 "cs.ATG"
+#line 2039 "cs.ATG"
out qualident);
if (la.kind == 23) {
TypeArgumentList(
-#line 2042 "cs.ATG"
+#line 2040 "cs.ATG"
out typeArguments, canBeUnbound);
}
-#line 2043 "cs.ATG"
+#line 2041 "cs.ATG"
typeRef = new InnerClassTypeReference(typeRef,
qualident, typeArguments);
}
}
@@ -2389,14 +2389,14 @@
}
void NullableQuestionMark(
-#line 2048 "cs.ATG"
+#line 2046 "cs.ATG"
ref TypeReference typeRef) {
-#line 2049 "cs.ATG"
+#line 2047 "cs.ATG"
List<TypeReference> typeArguments = new List<TypeReference>(1);
Expect(12);
-#line 2053 "cs.ATG"
+#line 2051 "cs.ATG"
if (typeRef != null) typeArguments.Add(typeRef);
typeRef = new TypeReference("System.Nullable", typeArguments);
@@ -4034,68 +4034,67 @@
Expression expr = null;
ArrayList expressions = new ArrayList();
uExpr = null;
- Console.WriteLine ("unary expr:" + la + " trace:" +
Environment.StackTrace);
while (StartOf(26) ||
-#line 1688 "cs.ATG"
+#line 1687 "cs.ATG"
IsTypeCast()) {
if (la.kind == 4) {
lexer.NextToken();
-#line 1675 "cs.ATG"
+#line 1674 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Plus));
} else if (la.kind == 5) {
lexer.NextToken();
-#line 1676 "cs.ATG"
+#line 1675 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Minus));
} else if (la.kind == 24) {
lexer.NextToken();
-#line 1677 "cs.ATG"
+#line 1676 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Not));
} else if (la.kind == 27) {
lexer.NextToken();
-#line 1678 "cs.ATG"
+#line 1677 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.BitNot));
} else if (la.kind == 6) {
lexer.NextToken();
-#line 1679 "cs.ATG"
+#line 1678 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Star));
} else if (la.kind == 31) {
lexer.NextToken();
-#line 1680 "cs.ATG"
+#line 1679 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Increment));
} else if (la.kind == 32) {
lexer.NextToken();
-#line 1681 "cs.ATG"
+#line 1680 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.Decrement));
} else if (la.kind == 28) {
lexer.NextToken();
-#line 1682 "cs.ATG"
+#line 1681 "cs.ATG"
expressions.Add(new
UnaryOperatorExpression(UnaryOperatorType.BitWiseAnd));
} else {
Expect(20);
Type(
-#line 1688 "cs.ATG"
+#line 1687 "cs.ATG"
out type);
Expect(21);
-#line 1688 "cs.ATG"
+#line 1687 "cs.ATG"
expressions.Add(new CastExpression(type));
}
}
if (
-#line 1693 "cs.ATG"
+#line 1692 "cs.ATG"
LastExpressionIsUnaryMinus(expressions) &&
IsMostNegativeIntegerWithoutTypeSuffix()) {
Expect(2);
-#line 1696 "cs.ATG"
+#line 1695 "cs.ATG"
expressions.RemoveAt(expressions.Count - 1);
if (t.literalValue is uint) {
expr = new PrimitiveExpression(int.MinValue,
int.MinValue.ToString());
@@ -4107,14 +4106,11 @@
} else if (StartOf(27)) {
PrimaryExpr(
-#line 1705 "cs.ATG"
+#line 1704 "cs.ATG"
out expr);
-
-#line 1705 "cs.ATG"
- Console.WriteLine ("expr:" + expr);
} else SynErr(179);
-#line 1707 "cs.ATG"
+#line 1706 "cs.ATG"
for (int i = 0; i < expressions.Count; ++i) {
Expression nextExpression = i + 1 < expressions.Count ?
(Expression)expressions[i + 1] : expr;
if (expressions[i] is CastExpression) {
@@ -4132,379 +4128,378 @@
}
void ConditionalOrExpr(
-#line 1888 "cs.ATG"
+#line 1886 "cs.ATG"
ref Expression outExpr) {
-#line 1889 "cs.ATG"
+#line 1887 "cs.ATG"
Expression expr;
ConditionalAndExpr(
-#line 1891 "cs.ATG"
+#line 1889 "cs.ATG"
ref outExpr);
while (la.kind == 26) {
lexer.NextToken();
UnaryExpr(
-#line 1891 "cs.ATG"
+#line 1889 "cs.ATG"
out expr);
ConditionalAndExpr(
-#line 1891 "cs.ATG"
+#line 1889 "cs.ATG"
ref expr);
-#line 1891 "cs.ATG"
+#line 1889 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
BinaryOperatorType.LogicalOr, expr);
}
}
void PrimaryExpr(
-#line 1724 "cs.ATG"
+#line 1723 "cs.ATG"
out Expression pexpr) {
-#line 1726 "cs.ATG"
+#line 1725 "cs.ATG"
TypeReference type = null;
List<TypeReference> typeList = null;
bool isArrayCreation = false;
Expression expr;
pexpr = null;
Location startPos = la.Location;
- Console.WriteLine("PrimaryExpr.");
if (la.kind == 112) {
lexer.NextToken();
-#line 1736 "cs.ATG"
+#line 1734 "cs.ATG"
pexpr = new PrimitiveExpression(true, "true");
} else if (la.kind == 71) {
lexer.NextToken();
-#line 1737 "cs.ATG"
+#line 1735 "cs.ATG"
pexpr = new PrimitiveExpression(false, "false");
} else if (la.kind == 89) {
lexer.NextToken();
-#line 1738 "cs.ATG"
+#line 1736 "cs.ATG"
pexpr = new PrimitiveExpression(null, "null");
} else if (la.kind == 2) {
lexer.NextToken();
-#line 1739 "cs.ATG"
+#line 1737 "cs.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val);
} else if (
-#line 1740 "cs.ATG"
+#line 1738 "cs.ATG"
IsTokenWithGenericParameters()) {
TypeName(
-#line 1741 "cs.ATG"
+#line 1739 "cs.ATG"
out type, true);
-#line 1741 "cs.ATG"
+#line 1739 "cs.ATG"
pexpr = new FieldReferenceExpression(new
TypeReferenceExpression (type), "");
} else if (
-#line 1742 "cs.ATG"
+#line 1740 "cs.ATG"
la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) {
Expect(1);
-#line 1743 "cs.ATG"
+#line 1741 "cs.ATG"
type = new TypeReference(t.val);
Expect(10);
-#line 1744 "cs.ATG"
+#line 1742 "cs.ATG"
pexpr = new TypeReferenceExpression(type);
Expect(1);
-#line 1745 "cs.ATG"
+#line 1743 "cs.ATG"
if (type.Type == "global") { type.IsGlobal = true;
type.Type = (t.val ?? "?"); } else type.Type += "." + (t.val ?? "?");
} else if (la.kind == 1) {
lexer.NextToken();
-#line 1747 "cs.ATG"
+#line 1745 "cs.ATG"
pexpr = new IdentifierExpression(t.val);
pexpr.StartLocation = t.Location;
} else if (la.kind == 20) {
lexer.NextToken();
Expr(
-#line 1749 "cs.ATG"
+#line 1747 "cs.ATG"
out expr);
Expect(21);
-#line 1749 "cs.ATG"
+#line 1747 "cs.ATG"
pexpr = new ParenthesizedExpression(expr);
} else if (StartOf(28)) {
-#line 1751 "cs.ATG"
+#line 1749 "cs.ATG"
string val = null;
switch (la.kind) {
case 51: {
lexer.NextToken();
-#line 1753 "cs.ATG"
+#line 1751 "cs.ATG"
val = "bool";
break;
}
case 53: {
lexer.NextToken();
-#line 1754 "cs.ATG"
+#line 1752 "cs.ATG"
val = "byte";
break;
}
case 56: {
lexer.NextToken();
-#line 1755 "cs.ATG"
+#line 1753 "cs.ATG"
val = "char";
break;
}
case 61: {
lexer.NextToken();
-#line 1756 "cs.ATG"
+#line 1754 "cs.ATG"
val = "decimal";
break;
}
case 65: {
lexer.NextToken();
-#line 1757 "cs.ATG"
+#line 1755 "cs.ATG"
val = "double";
break;
}
case 74: {
lexer.NextToken();
-#line 1758 "cs.ATG"
+#line 1756 "cs.ATG"
val = "float";
break;
}
case 81: {
lexer.NextToken();
-#line 1759 "cs.ATG"
+#line 1757 "cs.ATG"
val = "int";
break;
}
case 86: {
lexer.NextToken();
-#line 1760 "cs.ATG"
+#line 1758 "cs.ATG"
val = "long";
break;
}
case 90: {
lexer.NextToken();
-#line 1761 "cs.ATG"
+#line 1759 "cs.ATG"
val = "object";
break;
}
case 101: {
lexer.NextToken();
-#line 1762 "cs.ATG"
+#line 1760 "cs.ATG"
val = "sbyte";
break;
}
case 103: {
lexer.NextToken();
-#line 1763 "cs.ATG"
+#line 1761 "cs.ATG"
val = "short";
break;
}
case 107: {
lexer.NextToken();
-#line 1764 "cs.ATG"
+#line 1762 "cs.ATG"
val = "string";
break;
}
case 115: {
lexer.NextToken();
-#line 1765 "cs.ATG"
+#line 1763 "cs.ATG"
val = "uint";
break;
}
case 116: {
lexer.NextToken();
-#line 1766 "cs.ATG"
+#line 1764 "cs.ATG"
val = "ulong";
break;
}
case 119: {
lexer.NextToken();
-#line 1767 "cs.ATG"
+#line 1765 "cs.ATG"
val = "ushort";
break;
}
}
-#line 1768 "cs.ATG"
+#line 1766 "cs.ATG"
t.val = "";
Expect(15);
Expect(1);
-#line 1768 "cs.ATG"
+#line 1766 "cs.ATG"
pexpr = new FieldReferenceExpression(new
TypeReferenceExpression(val), t.val); pexpr.StartLocation = t.Location;
pexpr.EndLocation = t.EndLocation;
} else if (la.kind == 110) {
lexer.NextToken();
-#line 1770 "cs.ATG"
+#line 1768 "cs.ATG"
pexpr = new ThisReferenceExpression();
pexpr.StartLocation = t.Location;
} else if (la.kind == 50) {
lexer.NextToken();
-#line 1772 "cs.ATG"
+#line 1770 "cs.ATG"
Expression retExpr = new BaseReferenceExpression();
if (la.kind == 15) {
lexer.NextToken();
Expect(1);
-#line 1774 "cs.ATG"
+#line 1772 "cs.ATG"
retExpr = new FieldReferenceExpression(retExpr,
t.val); retExpr.StartLocation = t.Location; retExpr.EndLocation =
t.EndLocation;
} else if (la.kind == 18) {
lexer.NextToken();
Expr(
-#line 1775 "cs.ATG"
+#line 1773 "cs.ATG"
out expr);
-#line 1775 "cs.ATG"
+#line 1773 "cs.ATG"
List<Expression> indices = new
List<Expression>(); if (expr != null) { indices.Add(expr); }
while (la.kind == 14) {
lexer.NextToken();
Expr(
-#line 1776 "cs.ATG"
+#line 1774 "cs.ATG"
out expr);
-#line 1776 "cs.ATG"
+#line 1774 "cs.ATG"
if (expr != null) { indices.Add(expr);
}
}
Expect(19);
-#line 1777 "cs.ATG"
+#line 1775 "cs.ATG"
retExpr = new IndexerExpression(retExpr,
indices);
} else SynErr(180);
-#line 1778 "cs.ATG"
+#line 1776 "cs.ATG"
pexpr = retExpr;
} else if (la.kind == 88) {
lexer.NextToken();
NonArrayType(
-#line 1779 "cs.ATG"
+#line 1777 "cs.ATG"
out type);
-#line 1780 "cs.ATG"
+#line 1778 "cs.ATG"
List<Expression> parameters = new List<Expression>();
if (la.kind == 20) {
lexer.NextToken();
-#line 1785 "cs.ATG"
+#line 1783 "cs.ATG"
ObjectCreateExpression oce = new
ObjectCreateExpression(type, parameters);
if (StartOf(21)) {
Argument(
-#line 1786 "cs.ATG"
+#line 1784 "cs.ATG"
out expr);
-#line 1786 "cs.ATG"
+#line 1784 "cs.ATG"
if (expr != null) {
parameters.Add(expr); }
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 1787 "cs.ATG"
+#line 1785 "cs.ATG"
out expr);
-#line 1787 "cs.ATG"
+#line 1785 "cs.ATG"
if (expr != null) {
parameters.Add(expr); }
}
}
Expect(21);
-#line 1789 "cs.ATG"
+#line 1787 "cs.ATG"
pexpr = oce;
} else if (la.kind == 18) {
lexer.NextToken();
-#line 1791 "cs.ATG"
+#line 1789 "cs.ATG"
isArrayCreation = true; ArrayCreateExpression
ace = new ArrayCreateExpression(type); pexpr = ace;
-#line 1792 "cs.ATG"
+#line 1790 "cs.ATG"
int dims = 0; List<int> ranks = new
List<int>();
if (la.kind == 14 || la.kind == 19) {
while (la.kind == 14) {
lexer.NextToken();
-#line 1794 "cs.ATG"
+#line 1792 "cs.ATG"
dims += 1;
}
Expect(19);
-#line 1795 "cs.ATG"
+#line 1793 "cs.ATG"
ranks.Add(dims); dims = 0;
while (la.kind == 18) {
lexer.NextToken();
while (la.kind == 14) {
lexer.NextToken();
-#line 1796 "cs.ATG"
+#line 1794 "cs.ATG"
++dims;
}
Expect(19);
-#line 1796 "cs.ATG"
+#line 1794 "cs.ATG"
ranks.Add(dims); dims = 0;
}
-#line 1797 "cs.ATG"
+#line 1795 "cs.ATG"
ace.CreateType.RankSpecifier =
ranks.ToArray();
ArrayInitializer(
-#line 1798 "cs.ATG"
+#line 1796 "cs.ATG"
out expr);
-#line 1798 "cs.ATG"
+#line 1796 "cs.ATG"
ace.ArrayInitializer =
(ArrayInitializerExpression)expr;
} else if (StartOf(5)) {
Expr(
-#line 1799 "cs.ATG"
+#line 1797 "cs.ATG"
out expr);
-#line 1799 "cs.ATG"
+#line 1797 "cs.ATG"
if (expr != null) parameters.Add(expr);
while (la.kind == 14) {
lexer.NextToken();
-#line 1800 "cs.ATG"
+#line 1798 "cs.ATG"
dims += 1;
Expr(
-#line 1801 "cs.ATG"
+#line 1799 "cs.ATG"
out expr);
-#line 1801 "cs.ATG"
+#line 1799 "cs.ATG"
if (expr != null)
parameters.Add(expr);
}
Expect(19);
-#line 1803 "cs.ATG"
+#line 1801 "cs.ATG"
ranks.Add(dims); ace.Arguments =
parameters; dims = 0;
while (la.kind == 18) {
lexer.NextToken();
while (la.kind == 14) {
lexer.NextToken();
-#line 1804 "cs.ATG"
+#line 1802 "cs.ATG"
++dims;
}
Expect(19);
-#line 1804 "cs.ATG"
+#line 1802 "cs.ATG"
ranks.Add(dims); dims = 0;
}
-#line 1805 "cs.ATG"
+#line 1803 "cs.ATG"
ace.CreateType.RankSpecifier =
ranks.ToArray();
if (la.kind == 16) {
ArrayInitializer(
-#line 1806 "cs.ATG"
+#line 1804 "cs.ATG"
out expr);
-#line 1806 "cs.ATG"
+#line 1804 "cs.ATG"
ace.ArrayInitializer =
(ArrayInitializerExpression)expr;
}
} else SynErr(181);
@@ -4513,197 +4508,197 @@
lexer.NextToken();
Expect(20);
if (
-#line 1811 "cs.ATG"
+#line 1809 "cs.ATG"
NotVoidPointer()) {
Expect(122);
-#line 1811 "cs.ATG"
+#line 1809 "cs.ATG"
type = new TypeReference("void");
} else if (StartOf(9)) {
TypeWithRestriction(
-#line 1812 "cs.ATG"
+#line 1810 "cs.ATG"
out type, true, true);
} else SynErr(183);
Expect(21);
-#line 1813 "cs.ATG"
+#line 1811 "cs.ATG"
pexpr = new TypeOfExpression(type);
} else if (la.kind == 62) {
lexer.NextToken();
Expect(20);
Type(
-#line 1815 "cs.ATG"
+#line 1813 "cs.ATG"
out type);
Expect(21);
-#line 1815 "cs.ATG"
+#line 1813 "cs.ATG"
pexpr = new DefaultValueExpression(type);
} else if (la.kind == 104) {
lexer.NextToken();
Expect(20);
Type(
-#line 1816 "cs.ATG"
+#line 1814 "cs.ATG"
out type);
Expect(21);
-#line 1816 "cs.ATG"
+#line 1814 "cs.ATG"
pexpr = new SizeOfExpression(type);
} else if (la.kind == 57) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1817 "cs.ATG"
+#line 1815 "cs.ATG"
out expr);
Expect(21);
-#line 1817 "cs.ATG"
+#line 1815 "cs.ATG"
pexpr = new CheckedExpression(expr);
} else if (la.kind == 117) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1818 "cs.ATG"
+#line 1816 "cs.ATG"
out expr);
Expect(21);
-#line 1818 "cs.ATG"
+#line 1816 "cs.ATG"
pexpr = new UncheckedExpression(expr);
} else if (la.kind == 63) {
lexer.NextToken();
AnonymousMethodExpr(
-#line 1819 "cs.ATG"
+#line 1817 "cs.ATG"
out expr);
-#line 1819 "cs.ATG"
+#line 1817 "cs.ATG"
pexpr = expr;
} else SynErr(184);
while (StartOf(29) ||
-#line 1830 "cs.ATG"
+#line 1828 "cs.ATG"
IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr) ||
-#line 1839 "cs.ATG"
+#line 1837 "cs.ATG"
IsGenericFollowedBy(Tokens.OpenParenthesis)) {
if (la.kind == 31 || la.kind == 32) {
if (la.kind == 31) {
lexer.NextToken();
-#line 1823 "cs.ATG"
+#line 1821 "cs.ATG"
pexpr = new
UnaryOperatorExpression(pexpr, UnaryOperatorType.PostIncrement);
} else if (la.kind == 32) {
lexer.NextToken();
-#line 1824 "cs.ATG"
+#line 1822 "cs.ATG"
pexpr = new
UnaryOperatorExpression(pexpr, UnaryOperatorType.PostDecrement);
} else SynErr(185);
} else if (la.kind == 47) {
lexer.NextToken();
Expect(1);
-#line 1827 "cs.ATG"
+#line 1825 "cs.ATG"
pexpr = new PointerReferenceExpression(pexpr,
t.val); pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
} else if (la.kind == 15) {
lexer.NextToken();
Expect(1);
-#line 1828 "cs.ATG"
+#line 1826 "cs.ATG"
pexpr = new FieldReferenceExpression(pexpr,
t.val); pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
} else if (
-#line 1830 "cs.ATG"
+#line 1828 "cs.ATG"
IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr)) {
TypeArgumentList(
-#line 1831 "cs.ATG"
+#line 1829 "cs.ATG"
out typeList, false);
Expect(15);
Expect(1);
-#line 1833 "cs.ATG"
+#line 1831 "cs.ATG"
pexpr = new
FieldReferenceExpression(GetTypeReferenceExpression(pexpr, typeList), t.val);
pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
} else if (la.kind == 20) {
lexer.NextToken();
-#line 1835 "cs.ATG"
+#line 1833 "cs.ATG"
List<Expression> parameters = new
List<Expression>();
if (StartOf(21)) {
Argument(
-#line 1836 "cs.ATG"
+#line 1834 "cs.ATG"
out expr);
-#line 1836 "cs.ATG"
+#line 1834 "cs.ATG"
if (expr != null)
{parameters.Add(expr);}
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 1837 "cs.ATG"
+#line 1835 "cs.ATG"
out expr);
-#line 1837 "cs.ATG"
+#line 1835 "cs.ATG"
if (expr != null)
{parameters.Add(expr);}
}
}
Expect(21);
-#line 1838 "cs.ATG"
+#line 1836 "cs.ATG"
pexpr = new InvocationExpression(pexpr,
parameters);
} else if (
-#line 1839 "cs.ATG"
+#line 1837 "cs.ATG"
IsGenericFollowedBy(Tokens.OpenParenthesis)) {
TypeArgumentList(
-#line 1839 "cs.ATG"
+#line 1837 "cs.ATG"
out typeList, false);
Expect(20);
-#line 1840 "cs.ATG"
+#line 1838 "cs.ATG"
List<Expression> parameters = new
List<Expression>();
if (StartOf(21)) {
Argument(
-#line 1841 "cs.ATG"
+#line 1839 "cs.ATG"
out expr);
-#line 1841 "cs.ATG"
+#line 1839 "cs.ATG"
if (expr != null)
{parameters.Add(expr);}
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 1842 "cs.ATG"
+#line 1840 "cs.ATG"
out expr);
-#line 1842 "cs.ATG"
+#line 1840 "cs.ATG"
if (expr != null)
{parameters.Add(expr);}
}
}
Expect(21);
-#line 1843 "cs.ATG"
+#line 1841 "cs.ATG"
pexpr = new InvocationExpression(pexpr,
parameters, typeList);
} else {
-#line 1845 "cs.ATG"
+#line 1843 "cs.ATG"
if (isArrayCreation) Error("element access not
allow on array creation");
List<Expression> indices = new
List<Expression>();
lexer.NextToken();
Expr(
-#line 1848 "cs.ATG"
+#line 1846 "cs.ATG"
out expr);
-#line 1848 "cs.ATG"
+#line 1846 "cs.ATG"
if (expr != null) { indices.Add(expr); }
while (la.kind == 14) {
lexer.NextToken();
Expr(
-#line 1849 "cs.ATG"
+#line 1847 "cs.ATG"
out expr);
-#line 1849 "cs.ATG"
+#line 1847 "cs.ATG"
if (expr != null) { indices.Add(expr);
}
}
Expect(19);
-#line 1850 "cs.ATG"
+#line 1848 "cs.ATG"
pexpr = new IndexerExpression(pexpr, indices);
}
}
-#line 1852 "cs.ATG"
+#line 1850 "cs.ATG"
if (pexpr != null) {
if (pexpr.StartLocation.IsEmpty)
pexpr.StartLocation = startPos;
@@ -4714,10 +4709,10 @@
}
void AnonymousMethodExpr(
-#line 1861 "cs.ATG"
+#line 1859 "cs.ATG"
out Expression outExpr) {
-#line 1863 "cs.ATG"
+#line 1861 "cs.ATG"
AnonymousMethodExpression expr = new
AnonymousMethodExpression();
expr.StartLocation = t.Location;
Statement stmt;
@@ -4728,77 +4723,77 @@
lexer.NextToken();
if (StartOf(10)) {
FormalParameterList(
-#line 1872 "cs.ATG"
+#line 1870 "cs.ATG"
p);
-#line 1872 "cs.ATG"
+#line 1870 "cs.ATG"
expr.Parameters = p;
}
Expect(21);
-#line 1874 "cs.ATG"
+#line 1872 "cs.ATG"
expr.HasParameterList = true;
}
-#line 1878 "cs.ATG"
+#line 1876 "cs.ATG"
if (compilationUnit != null) {
Block(
-#line 1879 "cs.ATG"
+#line 1877 "cs.ATG"
out stmt);
-#line 1879 "cs.ATG"
+#line 1877 "cs.ATG"
expr.Body = (BlockStatement)stmt;
-#line 1880 "cs.ATG"
+#line 1878 "cs.ATG"
} else {
Expect(16);
-#line 1882 "cs.ATG"
+#line 1880 "cs.ATG"
lexer.SkipCurrentBlock(0);
Expect(17);
-#line 1884 "cs.ATG"
+#line 1882 "cs.ATG"
}
-#line 1885 "cs.ATG"
+#line 1883 "cs.ATG"
expr.EndLocation = t.Location;
}
void TypeArgumentList(
-#line 2058 "cs.ATG"
+#line 2056 "cs.ATG"
out List<TypeReference> types, bool canBeUnbound) {
-#line 2060 "cs.ATG"
+#line 2058 "cs.ATG"
types = new List<TypeReference>();
TypeReference type = null;
Expect(23);
if (
-#line 2065 "cs.ATG"
+#line 2063 "cs.ATG"
canBeUnbound && (la.kind == Tokens.GreaterThan || la.kind == Tokens.Comma)) {
-#line 2066 "cs.ATG"
+#line 2064 "cs.ATG"
types.Add(TypeReference.Null);
while (la.kind == 14) {
lexer.NextToken();
-#line 2067 "cs.ATG"
+#line 2065 "cs.ATG"
types.Add(TypeReference.Null);
}
} else if (StartOf(9)) {
Type(
-#line 2068 "cs.ATG"
+#line 2066 "cs.ATG"
out type);
-#line 2068 "cs.ATG"
+#line 2066 "cs.ATG"
if (type != null) { types.Add(type); }
while (la.kind == 14) {
lexer.NextToken();
Type(
-#line 2069 "cs.ATG"
+#line 2067 "cs.ATG"
out type);
-#line 2069 "cs.ATG"
+#line 2067 "cs.ATG"
if (type != null) { types.Add(type); }
}
} else SynErr(186);
@@ -4806,206 +4801,206 @@
}
void ConditionalAndExpr(
-#line 1894 "cs.ATG"
+#line 1892 "cs.ATG"
ref Expression outExpr) {
-#line 1895 "cs.ATG"
+#line 1893 "cs.ATG"
Expression expr;
InclusiveOrExpr(
-#line 1897 "cs.ATG"
+#line 1895 "cs.ATG"
ref outExpr);
while (la.kind == 25) {
lexer.NextToken();
UnaryExpr(
-#line 1897 "cs.ATG"
+#line 1895 "cs.ATG"
out expr);
InclusiveOrExpr(
-#line 1897 "cs.ATG"
+#line 1895 "cs.ATG"
ref expr);
-#line 1897 "cs.ATG"
+#line 1895 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
BinaryOperatorType.LogicalAnd, expr);
}
}
void InclusiveOrExpr(
-#line 1900 "cs.ATG"
+#line 1898 "cs.ATG"
ref Expression outExpr) {
-#line 1901 "cs.ATG"
+#line 1899 "cs.ATG"
Expression expr;
ExclusiveOrExpr(
-#line 1903 "cs.ATG"
+#line 1901 "cs.ATG"
ref outExpr);
while (la.kind == 29) {
lexer.NextToken();
UnaryExpr(
-#line 1903 "cs.ATG"
+#line 1901 "cs.ATG"
out expr);
ExclusiveOrExpr(
-#line 1903 "cs.ATG"
+#line 1901 "cs.ATG"
ref expr);
-#line 1903 "cs.ATG"
+#line 1901 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
BinaryOperatorType.BitwiseOr, expr);
}
}
void ExclusiveOrExpr(
-#line 1906 "cs.ATG"
+#line 1904 "cs.ATG"
ref Expression outExpr) {
-#line 1907 "cs.ATG"
+#line 1905 "cs.ATG"
Expression expr;
AndExpr(
-#line 1909 "cs.ATG"
+#line 1907 "cs.ATG"
ref outExpr);
while (la.kind == 30) {
lexer.NextToken();
UnaryExpr(
-#line 1909 "cs.ATG"
+#line 1907 "cs.ATG"
out expr);
AndExpr(
-#line 1909 "cs.ATG"
+#line 1907 "cs.ATG"
ref expr);
-#line 1909 "cs.ATG"
+#line 1907 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
BinaryOperatorType.ExclusiveOr, expr);
}
}
void AndExpr(
-#line 1912 "cs.ATG"
+#line 1910 "cs.ATG"
ref Expression outExpr) {
-#line 1913 "cs.ATG"
+#line 1911 "cs.ATG"
Expression expr;
EqualityExpr(
-#line 1915 "cs.ATG"
+#line 1913 "cs.ATG"
ref outExpr);
while (la.kind == 28) {
lexer.NextToken();
UnaryExpr(
-#line 1915 "cs.ATG"
+#line 1913 "cs.ATG"
out expr);
EqualityExpr(
-#line 1915 "cs.ATG"
+#line 1913 "cs.ATG"
ref expr);
-#line 1915 "cs.ATG"
+#line 1913 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
BinaryOperatorType.BitwiseAnd, expr);
}
}
void EqualityExpr(
-#line 1918 "cs.ATG"
+#line 1916 "cs.ATG"
ref Expression outExpr) {
-#line 1920 "cs.ATG"
+#line 1918 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
RelationalExpr(
-#line 1924 "cs.ATG"
+#line 1922 "cs.ATG"
ref outExpr);
while (la.kind == 33 || la.kind == 34) {
if (la.kind == 34) {
lexer.NextToken();
-#line 1927 "cs.ATG"
+#line 1925 "cs.ATG"
op = BinaryOperatorType.InEquality;
} else {
lexer.NextToken();
-#line 1928 "cs.ATG"
+#line 1926 "cs.ATG"
op = BinaryOperatorType.Equality;
}
UnaryExpr(
-#line 1930 "cs.ATG"
+#line 1928 "cs.ATG"
out expr);
RelationalExpr(
-#line 1930 "cs.ATG"
+#line 1928 "cs.ATG"
ref expr);
-#line 1930 "cs.ATG"
+#line 1928 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op,
expr);
}
}
void RelationalExpr(
-#line 1934 "cs.ATG"
+#line 1932 "cs.ATG"
ref Expression outExpr) {
-#line 1936 "cs.ATG"
+#line 1934 "cs.ATG"
TypeReference type;
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
ShiftExpr(
-#line 1941 "cs.ATG"
+#line 1939 "cs.ATG"
ref outExpr);
while (StartOf(30)) {
if (StartOf(31)) {
if (la.kind == 23) {
lexer.NextToken();
-#line 1943 "cs.ATG"
+#line 1941 "cs.ATG"
op = BinaryOperatorType.LessThan;
} else if (la.kind == 22) {
lexer.NextToken();
-#line 1944 "cs.ATG"
+#line 1942 "cs.ATG"
op = BinaryOperatorType.GreaterThan;
} else if (la.kind == 36) {
lexer.NextToken();
-#line 1945 "cs.ATG"
+#line 1943 "cs.ATG"
op =
BinaryOperatorType.LessThanOrEqual;
} else if (la.kind == 35) {
lexer.NextToken();
-#line 1946 "cs.ATG"
+#line 1944 "cs.ATG"
op =
BinaryOperatorType.GreaterThanOrEqual;
} else SynErr(187);
UnaryExpr(
-#line 1948 "cs.ATG"
+#line 1946 "cs.ATG"
out expr);
ShiftExpr(
-#line 1949 "cs.ATG"
+#line 1947 "cs.ATG"
ref expr);
-#line 1950 "cs.ATG"
+#line 1948 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr,
op, expr);
} else {
if (la.kind == 84) {
lexer.NextToken();
TypeWithRestriction(
-#line 1953 "cs.ATG"
+#line 1951 "cs.ATG"
out type, false, false);
if (
-#line 1954 "cs.ATG"
+#line 1952 "cs.ATG"
la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false) {
NullableQuestionMark(
-#line 1955 "cs.ATG"
+#line 1953 "cs.ATG"
ref type);
}
-#line 1956 "cs.ATG"
+#line 1954 "cs.ATG"
outExpr = new
TypeOfIsExpression(outExpr, type);
} else if (la.kind == 49) {
lexer.NextToken();
TypeWithRestriction(
-#line 1958 "cs.ATG"
+#line 1956 "cs.ATG"
out type, false, false);
if (
-#line 1959 "cs.ATG"
+#line 1957 "cs.ATG"
la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false) {
NullableQuestionMark(
-#line 1960 "cs.ATG"
+#line 1958 "cs.ATG"
ref type);
}
-#line 1961 "cs.ATG"
+#line 1959 "cs.ATG"
outExpr = new CastExpression(type,
outExpr, CastType.TryCast);
} else SynErr(188);
}
@@ -5013,83 +5008,83 @@
}
void ShiftExpr(
-#line 1966 "cs.ATG"
+#line 1964 "cs.ATG"
ref Expression outExpr) {
-#line 1968 "cs.ATG"
+#line 1966 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
AdditiveExpr(
-#line 1972 "cs.ATG"
+#line 1970 "cs.ATG"
ref outExpr);
while (la.kind == 37 ||
-#line 1975 "cs.ATG"
+#line 1973 "cs.ATG"
IsShiftRight()) {
if (la.kind == 37) {
lexer.NextToken();
-#line 1974 "cs.ATG"
+#line 1972 "cs.ATG"
op = BinaryOperatorType.ShiftLeft;
} else {
Expect(22);
Expect(22);
-#line 1976 "cs.ATG"
+#line 1974 "cs.ATG"
op = BinaryOperatorType.ShiftRight;
}
UnaryExpr(
-#line 1979 "cs.ATG"
+#line 1977 "cs.ATG"
out expr);
AdditiveExpr(
-#line 1979 "cs.ATG"
+#line 1977 "cs.ATG"
ref expr);
-#line 1979 "cs.ATG"
+#line 1977 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op,
expr);
}
}
void AdditiveExpr(
-#line 1983 "cs.ATG"
+#line 1981 "cs.ATG"
ref Expression outExpr) {
-#line 1985 "cs.ATG"
+#line 1983 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
MultiplicativeExpr(
-#line 1989 "cs.ATG"
+#line 1987 "cs.ATG"
ref outExpr);
while (la.kind == 4 || la.kind == 5) {
if (la.kind == 4) {
lexer.NextToken();
-#line 1992 "cs.ATG"
+#line 1990 "cs.ATG"
op = BinaryOperatorType.Add;
} else {
lexer.NextToken();
-#line 1993 "cs.ATG"
+#line 1991 "cs.ATG"
op = BinaryOperatorType.Subtract;
}
UnaryExpr(
-#line 1995 "cs.ATG"
+#line 1993 "cs.ATG"
out expr);
MultiplicativeExpr(
-#line 1995 "cs.ATG"
+#line 1993 "cs.ATG"
ref expr);
-#line 1995 "cs.ATG"
+#line 1993 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op,
expr);
}
}
void MultiplicativeExpr(
-#line 1999 "cs.ATG"
+#line 1997 "cs.ATG"
ref Expression outExpr) {
-#line 2001 "cs.ATG"
+#line 1999 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
@@ -5097,57 +5092,57 @@
if (la.kind == 6) {
lexer.NextToken();
-#line 2007 "cs.ATG"
+#line 2005 "cs.ATG"
op = BinaryOperatorType.Multiply;
} else if (la.kind == 7) {
lexer.NextToken();
-#line 2008 "cs.ATG"
+#line 2006 "cs.ATG"
op = BinaryOperatorType.Divide;
} else {
lexer.NextToken();
-#line 2009 "cs.ATG"
+#line 2007 "cs.ATG"
op = BinaryOperatorType.Modulus;
}
UnaryExpr(
-#line 2011 "cs.ATG"
+#line 2009 "cs.ATG"
out expr);
-#line 2011 "cs.ATG"
+#line 2009 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op,
expr);
}
}
void TypeParameterConstraintsClauseBase(
-#line 2115 "cs.ATG"
+#line 2113 "cs.ATG"
out TypeReference type) {
-#line 2116 "cs.ATG"
+#line 2114 "cs.ATG"
TypeReference t; type = null;
if (la.kind == 108) {
lexer.NextToken();
-#line 2118 "cs.ATG"
+#line 2116 "cs.ATG"
type = TypeReference.StructConstraint;
} else if (la.kind == 58) {
lexer.NextToken();
-#line 2119 "cs.ATG"
+#line 2117 "cs.ATG"
type = TypeReference.ClassConstraint;
} else if (la.kind == 88) {
lexer.NextToken();
Expect(20);
Expect(21);
-#line 2120 "cs.ATG"
+#line 2118 "cs.ATG"
type = TypeReference.NewConstraint;
} else if (StartOf(9)) {
Type(
-#line 2121 "cs.ATG"
+#line 2119 "cs.ATG"
out t);
-#line 2121 "cs.ATG"
+#line 2119 "cs.ATG"
type = t;
} else SynErr(189);
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches