Browse Source

implemented NewExpression

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/vbnet@5959 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
14c2655dd0
  1. 36
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg
  2. 4595
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs

36
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/ExpressionFinder.atg

@ -370,9 +370,12 @@ Block =
. .
Expression = Expression =
SimpleExpressionWithSuffix { BinaryOperator SimpleExpressionWithSuffix } (. nextTokenIsPotentialStartOfXmlMode = true; .)
/* TODO: operators */ (
SimpleExpressionWithSuffix { BinaryOperator SimpleExpressionWithSuffix }
/* TODO: operators */
| NewExpression
)
. .
BinaryOperator = BinaryOperator =
@ -380,14 +383,20 @@ BinaryOperator =
| "=" | "<>" | "<" | ">" | "<=" | ">=" | "=" | "<>" | "<" | ">" | "<=" | ">="
| "Like" | "&" | "And" | "AndAlso" | "Or" | "OrElse" | "Like" | "&" | "And" | "AndAlso" | "Or" | "OrElse"
| "Xor" | "<<" | ">>" | "Is" | "IsNot" | "Xor" | "<<" | ">>" | "Is" | "IsNot"
| "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" | "^=" | "*=" | "/=" | "\\=" | "+=" | "-=" | "&=" | "To" | ":="
. .
UnaryOperator = UnaryOperator =
"+" | "-" | "Not" | "AddressOf" "+" | "-" | "Not" | "AddressOf"
. .
SimpleExpressionWithSuffix = (. nextTokenIsPotentialStartOfXmlMode = true; .) { UnaryOperator } SimpleExpression { ExpressionSuffix } . SimpleExpressionWithSuffix =
(. nextTokenIsPotentialStartOfXmlMode = true; .)
{ UnaryOperator }
(
SimpleExpression { ExpressionSuffix }
| "TypeOf" SimpleExpressionWithSuffix "Is" TypeName
).
SimpleExpression = SimpleExpression =
(. nextTokenIsPotentialStartOfXmlMode = true; .) (. nextTokenIsPotentialStartOfXmlMode = true; .)
@ -397,11 +406,22 @@ SimpleExpression =
| ( "." | "!" ) IdentifierOrKeyword | ( "." | "!" ) IdentifierOrKeyword
| "GetType" "(" TypeName ")" | "GetType" "(" TypeName ")"
| "GetXmlNamespace" "(" (. readXmlIdentifier = true; .) Identifier ")" | "GetXmlNamespace" "(" (. readXmlIdentifier = true; .) Identifier ")"
| "TypeOf" SimpleExpressionWithSuffix "Is" TypeName
| XmlLiteral | XmlLiteral
) )
. .
NewExpression =
"New" [ TypeName [ "From" CollectionInitializer ] ] [ "With" ObjectInitializer ]
.
ObjectInitializer =
"{" [ "Key" ] "." IdentifierOrKeyword "=" Expression { "," [ "Key" ] "." IdentifierOrKeyword "=" Expression } "}"
.
CollectionInitializer =
"{" ( Expression | CollectionInitializer ) { "," ( Expression | CollectionInitializer ) } "}"
.
ExpressionSuffix = ExpressionSuffix =
"(" (. nextTokenIsPotentialStartOfXmlMode = true; .) ( "Of" TypeName { "," TypeName } ")" | ArgumentList ")" ) "(" (. nextTokenIsPotentialStartOfXmlMode = true; .) ( "Of" TypeName { "," TypeName } ")" | ArgumentList ")" )
| ( "." | "!" ) IdentifierOrKeyword | ( "." | "!" ) IdentifierOrKeyword
@ -438,7 +458,7 @@ PrimitiveTypeName =
TypeName = ( "Global" | Identifier | PrimitiveTypeName ) { TypeSuffix } { "." IdentifierOrKeyword { TypeSuffix } } . TypeName = ( "Global" | Identifier | PrimitiveTypeName ) { TypeSuffix } { "." IdentifierOrKeyword { TypeSuffix } } .
TypeSuffix = "(" ( "Of" [ TypeName ] { "," [ TypeName ] } | { "," /*[ EOL ]*/ } ) ")" . TypeSuffix = "(" ( "Of" [ TypeName ] { "," [ TypeName ] } | [ ArgumentList ] ) ")" .
IdentifierOrKeyword = ANY . IdentifierOrKeyword = ANY .
@ -489,7 +509,7 @@ InvocationStatement =
. .
ArgumentList = ArgumentList =
Expression { "," Expression [ ":=" Expression ] } Expression { "," Expression }
. .
/* This production handles pseudo keywords that are needed in the grammar */ /* This production handles pseudo keywords that are needed in the grammar */

4595
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Experimental/Parser.cs

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save