parser(members2).vb

来自「大名鼎鼎的mono是.NET平台的跨平台(支持linux」· VB 代码 · 共 834 行 · 第 1/3 页

VB
834
字号
    ''' MustOverrideFunctionDeclaration  ::=    '''	[  Attributes  ]  [  MustOverrideProcedureModifier+  ]  "Function" FunctionSignature    '''		[  HandlesOrImplements  ]  StatementTerminator    '''    ''' </summary>    ''' <remarks></remarks>    Private Function ParseFunctionDeclaration(ByVal Parent As TypeDeclaration, ByVal Info As ParseAttributableInfo) As FunctionDeclaration        Dim result As New FunctionDeclaration(Parent)        Dim m_Modifiers As Modifiers = Nothing        Dim m_Signature As FunctionSignature = Nothing        Dim m_HandlesOrImplements As HandlesOrImplements = Nothing        Dim m_Block As CodeBlock = Nothing        m_Modifiers = ParseModifiers(result, ModifierMasks.MustOverrideProcedureModifiers)        tm.AcceptIfNotInternalError(KS.Function)        m_Signature = ParseFunctionSignature(result)        If m_Signature Is Nothing Then Helper.ErrorRecoveryNotImplemented()        If vbnc.HandlesOrImplements.IsMe(tm) Then            m_HandlesOrImplements = ParseHandlesOrImplements(result)            If m_HandlesOrImplements Is Nothing Then Helper.ErrorRecoveryNotImplemented()        End If        If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        If m_Modifiers.Is(ModifierMasks.MustOverride) = False Then            m_Block = ParseCodeBlock(result, False)            If m_Block Is Nothing Then Helper.ErrorRecoveryNotImplemented()            If tm.AcceptIfNotError(KS.End_Function) = False Then Helper.ErrorRecoveryNotImplemented()            If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        End If        result.Init(Info.Attributes, m_Modifiers, m_Signature, m_HandlesOrImplements, m_Block)        Return result    End Function    ''' <summary>    ''' SubDeclaration  ::=    '''	[  Attributes  ]  [  ProcedureModifier+  ] "Sub" SubSignature  [  HandlesOrImplements  ]  LineTerminator    '''	Block    '''	"End" "Sub" StatementTerminator    '''     ''' MustOverrideSubDeclaration  ::=    '''	[  Attributes  ]  [  MustOverrideProcedureModifier+  ] "Sub" SubSignature  [  HandlesOrImplements  ]    '''		StatementTerminator    '''    ''' </summary>    ''' <remarks></remarks>    Private Function ParseSubDeclaration(ByVal Parent As TypeDeclaration, ByVal Info As ParseAttributableInfo) As SubDeclaration        Dim result As New SubDeclaration(Parent)        Dim m_Modifiers As Modifiers = Nothing        Dim m_Signature As SubSignature = Nothing        Dim m_HandlesOrImplements As HandlesOrImplements = Nothing        Dim m_Block As CodeBlock = Nothing        m_Modifiers = ParseModifiers(result, ModifierMasks.MustOverrideProcedureModifiers)        tm.AcceptIfNotInternalError(KS.Sub)        m_Signature = ParseSubSignature(result)        If m_Signature Is Nothing Then Helper.ErrorRecoveryNotImplemented()        If vbnc.HandlesOrImplements.IsMe(tm) Then            m_HandlesOrImplements = ParseHandlesOrImplements(result)        End If        If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        If m_Modifiers.Is(ModifierMasks.MustOverride) = False Then            m_Block = ParseCodeBlock(result, False)            If m_Block Is Nothing Then Helper.ErrorRecoveryNotImplemented()            If tm.AcceptIfNotError(KS.End_Sub) = False Then Helper.ErrorRecoveryNotImplemented()            If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        End If        result.Init(Info.Attributes, m_Modifiers, m_Signature, m_HandlesOrImplements, m_Block)        Return result    End Function    ''' <summary>    ''' HandlesOrImplements  ::=  HandlesClause  |  ImplementsClause    ''' </summary>    ''' <remarks></remarks>    Private Function ParseHandlesOrImplements(ByVal Parent As ParsedObject) As HandlesOrImplements        Dim result As New HandlesOrImplements(Parent)        If vbnc.HandlesClause.IsMe(tm) Then            Dim m_Clause As HandlesClause            m_Clause = ParseHandlesClause(result)            If m_Clause Is Nothing Then Helper.ErrorRecoveryNotImplemented()            result.Init(m_Clause)        ElseIf vbnc.MemberImplementsClause.IsMe(tm) Then            Dim m_Clause As MemberImplementsClause            m_Clause = ParseImplementsClause(result)            If m_Clause Is Nothing Then Helper.ErrorRecoveryNotImplemented()            result.Init(m_Clause)        Else            Throw New InternalException(result)        End If        Return result    End Function    ''' <summary>    ''' HandlesClause  ::=  [  "Handles" EventHandlesList  ]    ''' LAMESPEC: shouldn't it be:    ''' HandlesClause  ::=  "Handles" EventHandlesList    ''' </summary>    ''' <remarks></remarks>    Private Function ParseHandlesClause(ByVal Parent As ParsedObject) As HandlesClause        Dim result As New HandlesClause(Parent)        Dim m_List As New EventHandlesList(result)        tm.AcceptIfNotInternalError(KS.Handles)        If ParseList(Of EventMemberSpecifier)(m_List, New ParseDelegate_Parent(Of EventMemberSpecifier)(AddressOf ParseEventMemberSpecifier), result) = False Then            Helper.ErrorRecoveryNotImplemented()        End If        result.Init(m_List)        Return result    End Function    ''' <summary>    ''' EventMemberSpecifier  ::=    '''  QualifiedIdentifier  "."  IdentifierOrKeyword  |    '''  MyBase  "."  IdentifierOrKeyword  |    '''	 Me  "."  IdentifierOrKeyword    ''' </summary>    ''' <remarks></remarks>    Private Function ParseEventMemberSpecifier(ByVal Parent As ParsedObject) As EventMemberSpecifier        Dim result As New EventMemberSpecifier(Parent)        Dim m_First As Expression        Dim m_Second As IdentifierOrKeyword        If tm.CurrentToken = KS.MyBase Then            m_First = ParseMyBaseExpression(result)        ElseIf tm.CurrentToken = KS.Me Then            m_First = ParseMeExpression(result)        Else            Dim id As Identifier            id = ParseIdentifier(result)            If id Is Nothing Then                Helper.ErrorRecoveryNotImplemented()            End If            Dim sne As New SimpleNameExpression(result)            sne.Init(id.Token, New TypeArgumentList(sne))            m_First = sne        End If        If m_First Is Nothing Then Helper.ErrorRecoveryNotImplemented()        If tm.AcceptIfNotError(KS.Dot) = False Then Helper.ErrorRecoveryNotImplemented()        m_Second = ParseIdentifierOrKeyword(result)        If m_Second Is Nothing Then Helper.ErrorRecoveryNotImplemented()        result.Init(m_First, m_Second)        Return result    End Function    ''' <summary>    ''' InterfaceSubDeclaration  ::=     ''' [  Attributes  ]  [  InterfaceProcedureModifier+  ]  "Sub" SubSignature  StatementTerminator    ''' </summary>    ''' <remarks></remarks>    Private Function ParseInterfaceSubDeclaration(ByVal Parent As TypeDeclaration, ByVal Info As ParseAttributableInfo) As InterfaceSubDeclaration        Dim result As New InterfaceSubDeclaration(Parent)        Dim m_Modifiers As Modifiers = Nothing        Dim m_Signature As SubSignature = Nothing        m_Modifiers = ParseModifiers(result, ModifierMasks.InterfaceProcedureModifiers)        tm.AcceptIfNotInternalError(KS.Sub)        m_Signature = ParseSubSignature(Parent)        If m_Signature Is Nothing Then Helper.ErrorRecoveryNotImplemented()        If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        result.Init(Info.Attributes, m_Modifiers, m_Signature)        Return result    End Function    ''' <summary>    ''' InterfaceFunctionDeclaration  ::=    '''	[  Attributes  ]  [  InterfaceProcedureModifier+  ] "Function" FunctionSignature  StatementTerminator    '''    ''' </summary>    ''' <remarks></remarks>    Private Function ParseInterfaceFunctionDeclaration(ByVal Parent As TypeDeclaration, ByVal Info As ParseAttributableInfo) As InterfaceFunctionDeclaration        Dim result As New InterfaceFunctionDeclaration(Parent)        Dim m_Modifiers As Modifiers = Nothing        Dim m_Signature As FunctionSignature = Nothing        m_Modifiers = ParseModifiers(result, ModifierMasks.InterfaceProcedureModifiers)        tm.AcceptIfNotInternalError(KS.Function)        m_Signature = ParseFunctionSignature(result)        If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        result.Init(Info.Attributes, m_Modifiers, m_Signature)        Return result    End Function    ''' <summary>    ''' ExternalSubDeclaration ::=    ''' 	[  Attributes  ]  [  ExternalMethodModifier+  ] "Declare" [  CharsetModifier  ] "Sub" Identifier    '''		LibraryClause  [  AliasClause  ]  [  (  [  ParameterList  ]  )  ]  StatementTerminator    ''' </summary>    ''' <remarks></remarks>    Private Function ParseExternalSubDeclaration(ByVal Parent As TypeDeclaration, ByVal Info As ParseAttributableInfo) As ExternalSubDeclaration        Dim result As New ExternalSubDeclaration(Parent)        Dim m_Modifiers As Modifiers = Nothing        Dim m_CharsetModifier As KS        Dim m_Identifier As Token = Nothing        Dim m_LibraryClause As LibraryClause = Nothing        Dim m_AliasClause As AliasClause = Nothing        Dim m_ParameterList As ParameterList = Nothing        m_Modifiers = ParseModifiers(result, ModifierMasks.ExternalMethodModifiers)        tm.AcceptIfNotInternalError(KS.Declare)        If tm.CurrentToken.Equals(ModifierMasks.CharSetModifiers) Then            m_CharsetModifier = tm.CurrentToken.Keyword            tm.NextToken()        End If        tm.AcceptIfNotInternalError(KS.Sub)        If tm.CurrentToken.IsIdentifier = False Then            Helper.ErrorRecoveryNotImplemented()        End If        m_Identifier = tm.CurrentToken        tm.NextToken()        m_LibraryClause = ParseLibraryClause(result)        If m_LibraryClause Is Nothing Then Helper.ErrorRecoveryNotImplemented()        If AliasClause.IsMe(tm) Then            m_AliasClause = ParseAliasClause(result)            If m_AliasClause Is Nothing Then Helper.ErrorRecoveryNotImplemented()        End If        If tm.Accept(KS.LParenthesis) Then            m_ParameterList = New ParameterList(result)            If tm.Accept(KS.RParenthesis) = False Then                If ParseList(Of Parameter)(m_ParameterList, New ParseDelegate_Parent(Of Parameter)(AddressOf ParseParameter), m_ParameterList) = False Then                    Helper.ErrorRecoveryNotImplemented()                End If                If tm.AcceptIfNotError(KS.RParenthesis) = False Then Helper.ErrorRecoveryNotImplemented()            End If        End If        If tm.AcceptEndOfStatement(, True) = False Then Helper.ErrorRecoveryNotImplemented()        result.Init(Info.Attributes, m_Modifiers, m_CharsetModifier, m_Identifier, m_LibraryClause, m_AliasClause, m_ParameterList)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?