Browse Source

* Src/Parser/gen.sh:

* Src/Parser/CSharp/cs.ATG:
* Src/Parser/CSharp/Parser.cs:
* Src/Parser/CSharp/CSharpParser.cs: Added ref/out parameters for
  typed lambda expressions.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3943 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mike Krüger 17 years ago
parent
commit
ebc2f1b64f
  1. 3
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs
  2. 504
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs
  3. 8
      src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG
  4. 18
      src/Libraries/NRefactory/Project/Src/Parser/gen.sh

3
src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs

@ -247,6 +247,9 @@ namespace ICSharpCode.NRefactory.Parser.CSharp @@ -247,6 +247,9 @@ namespace ICSharpCode.NRefactory.Parser.CSharp
StartPeek();
Token pt = Peek();
while (pt.kind != Tokens.CloseParenthesis) {
if (pt.kind == Tokens.Out || pt.kind == Tokens.Ref) {
pt = Peek();
}
if (!IsTypeNameOrKWForTypeCast(ref pt)) {
return false;
}

504
src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs

File diff suppressed because it is too large Load Diff

8
src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG

@ -2101,6 +2101,7 @@ ShortedLambdaExpression<IdentifierExpression ident, out Expression pexpr> @@ -2101,6 +2101,7 @@ ShortedLambdaExpression<IdentifierExpression ident, out Expression pexpr>
LambdaExpressionParameter<out ParameterDeclarationExpression p>
(. Location start = la.Location; p = null;
TypeReference type;
ParameterModifiers mod = ParameterModifiers.In;
.)
=
( IF (Peek(1).kind == Tokens.Comma || Peek(1).kind == Tokens.CloseParenthesis)
@ -2108,9 +2109,12 @@ LambdaExpressionParameter<out ParameterDeclarationExpression p> @@ -2108,9 +2109,12 @@ LambdaExpressionParameter<out ParameterDeclarationExpression p>
(. p = new ParameterDeclarationExpression(null, t.val);
p.StartLocation = start; p.EndLocation = t.EndLocation;
.)
| Type<out type>
| [ "ref" (. mod = ParameterModifiers.Ref; .)
| "out" (. mod = ParameterModifiers.Out; .)
]
Type<out type>
Identifier
(. p = new ParameterDeclarationExpression(type, t.val);
(. p = new ParameterDeclarationExpression(type, t.val, mod);
p.StartLocation = start; p.EndLocation = t.EndLocation;
.)
)

18
src/Libraries/NRefactory/Project/Src/Parser/gen.sh

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
@echo off
echo Generating with #Coco
cd Frames
cp ../CSharp/cs.ATG .
mono SharpCoco.exe -namespace ICSharpCode.NRefactory.Parser.CSharp cs.ATG
mv Parser.cs ../CSharp
cp ../VBNet/VBNET.ATG .
mono SharpCoco.exe -trace GIPXA -namespace ICSharpCode.NRefactory.Parser.VB VBNET.ATG
mv Parser.cs ../VBNet
rm cs.ATG
rm VBNET.ATG
cd ..
Loading…
Cancel
Save