Browse Source

implemented recursion of types inside types

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/vbnet@6139 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
48f95300e4
  1. 14
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/ExpressionFinder.atg
  2. 1018
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Parser.cs
  3. 4
      src/Libraries/NRefactory/Test/Lexer/VBNet/LexerContextTests.cs

14
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/ExpressionFinder.atg

@ -323,7 +323,13 @@ ClassOrModuleOrStructureTypeDeclaration =
[ "(" "Of" GenericTypeParameterDeclaration ")" ] StatementTerminator [ "(" "Of" GenericTypeParameterDeclaration ")" ] StatementTerminator
[ (. isMissingModifier = false; .) "Inherits" { ANY } StatementTerminator ] [ (. isMissingModifier = false; .) "Inherits" { ANY } StatementTerminator ]
[ (. isMissingModifier = false; .) "Implements" { ANY } StatementTerminator ] [ (. isMissingModifier = false; .) "Implements" { ANY } StatementTerminator ]
{ MemberDeclaration } (. isMissingModifier = false; .) {
{ AttributeBlock } (.OnEachPossiblePath: isMissingModifier = true; .)
{ TypeOrMemberModifier (. isMissingModifier = false; .) } (. isMissingModifier = false; .)
( ClassOrModuleOrStructureTypeDeclaration | DelegateTypeDeclaration | EnumTypeDeclaration
| InterfaceDeclaration | MemberDeclaration )
}
(. isMissingModifier = false; .)
"End" ( "Module" | "Class" | "Structure" ) StatementTerminator "End" ( "Module" | "Class" | "Structure" ) StatementTerminator
(. PopContext(); .) (. PopContext(); .)
. .
@ -339,7 +345,7 @@ InterfaceDeclaration =
[ "Inherits" TypeName { "," TypeName } StatementTerminator ] [ "Inherits" TypeName { "," TypeName } StatementTerminator ]
{ {
{ AttributeBlock } (.OnEachPossiblePath: isMissingModifier = true; .) { AttributeBlock } (.OnEachPossiblePath: isMissingModifier = true; .)
{ TypeAndMemberModifier (. isMissingModifier = false; .) } (. isMissingModifier = false; .) { TypeOrMemberModifier (. isMissingModifier = false; .) } (. isMissingModifier = false; .)
( ClassOrModuleOrStructureTypeDeclaration | DelegateTypeDeclaration | EnumTypeDeclaration ( ClassOrModuleOrStructureTypeDeclaration | DelegateTypeDeclaration | EnumTypeDeclaration
| InterfaceDeclaration | InterfaceMemberDeclaration ) | InterfaceDeclaration | InterfaceMemberDeclaration )
} }
@ -351,7 +357,7 @@ InterfaceMemberDeclaration =
InterfaceEvent | InterfaceProperty | InterfaceSubOrFunction InterfaceEvent | InterfaceProperty | InterfaceSubOrFunction
. .
TypeAndMemberModifier = TypeOrMemberModifier =
MemberModifier /* contains all modifiers for types */ MemberModifier /* contains all modifiers for types */
. .
@ -391,9 +397,7 @@ DelegateTypeDeclaration =
. .
MemberDeclaration = MemberDeclaration =
(.OnEachPossiblePath: isMissingModifier = true; .)
(. PushContext(Context.Member, la, t); .) (. PushContext(Context.Member, la, t); .)
{ AttributeBlock } { MemberModifier (. isMissingModifier = false; .) } (. isMissingModifier = false; .)
( (
MemberVariableOrConstantDeclaration | MemberVariableOrConstantDeclaration |
SubOrFunctionDeclaration | SubOrFunctionDeclaration |

1018
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

4
src/Libraries/NRefactory/Test/Lexer/VBNet/LexerContextTests.cs

@ -205,9 +205,9 @@ End Class
enter TypeDeclaration enter TypeDeclaration
enter Identifier enter Identifier
exit Identifier exit Identifier
enter Attribute
exit Attribute
enter Member enter Member
enter Attribute
exit Attribute
enter Identifier enter Identifier
exit Identifier exit Identifier
enter Body enter Body

Loading…
Cancel
Save