⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genericconstraint2.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 3 页
字号:
        'ReadOnly Property AsSpecial() As KS        '    Get        '        'If IsKeyword() Then        '        '    Return AsKeyword.Keyword        '        'ElseIf IsSymbol() Then        '        '    Return AsSymbol.Symbol        '        'Else        '        '    Throw New InternalException        '        'End If        '    End Get        'End Property        'Function IsKeyword() As Boolean        '    Return TypeOf Me Is KeywordToken        'End Function        'Function AsKeyword() As KeywordToken        '    If IsKeyword() = False Then Throw New InternalException 'Helper.Assert(IsKeyword)        '    Return DirectCast(Me, KeywordToken)        'End Function        'Function IsSymbol() As Boolean        '    Return TypeOf Me Is SymbolToken        'End Function        'Function AsSymbol() As SymbolToken        '    If IsSymbol() = False Then Throw New InternalException 'Helper.Assert(IsSymbol)        '    Return DirectCast(Me, SymbolToken)        'End Function        'Function IsIdentifierOrKeyword() As Boolean        '    Return IsIdentifier() OrElse IsKeyword()        'End Function        'Function IsIdentifier() As Boolean        '    Return TypeOf Me Is IdentifierToken        'End Function        'Function AsIdentifier() As IdentifierToken        '    If IsIdentifier() = False Then Throw New InternalException 'Helper.Assert(IsIdentifier)        '    Return DirectCast(Me, IdentifierToken)        'End Function        'Function IsLiteral() As Boolean        '    Return TypeOf Me Is ILiteralToken        'End Function        'Function AsLiteral() As ILiteralToken        '    Return DirectCast(Me, ILiteralToken)        'End Function        'Function IsDateLiteral() As Boolean        '    Return TypeOf Me Is DateLiteralToken        'End Function        'Function AsDateLiteral() As DateLiteralToken        '    If IsDateLiteral() = False Then Throw New InternalException ' Helper.Assert(IsDateLiteral)        '    Return DirectCast(Me, DateLiteralToken)        'End Function        'Function IsIntegerLiteral() As Boolean        '    Return TypeOf Me Is IIntegralLiteralToken        'End Function        'Function AsIntegerLiteral() As IIntegralLiteralToken        '    If IsIntegerLiteral() = False Then Throw New InternalException ' Helper.Assert(IsIntegerLiteral)        '    Return DirectCast(Me, IIntegralLiteralToken)        'End Function        'Function IsCharLiteral() As Boolean        '    Return TypeOf Me Is CharLiteralToken        'End Function        'Function AsCharLiteral() As CharLiteralToken        '    If IsCharLiteral() = False Then Throw New InternalException ' Helper.Assert(IsCharLiteral)        '    Return DirectCast(Me, CharLiteralToken)        'End Function        'Function IsStringLiteral() As Boolean        '    Return TypeOf Me Is StringLiteralToken        'End Function        'Function AsStringLiteral() As StringLiteralToken        '    If IsStringLiteral() = False Then Throw New InternalException ' Helper.Assert(IsStringLiteral)        '    Return DirectCast(Me, StringLiteralToken)        'End Function        'Function IsDecimalLiteral() As Boolean        '    Return TypeOf Me Is DecimalLiteralToken        'End Function        'Function AsDecimalLiterl() As DecimalLiteralToken        '    If IsDecimalLiteral() = False Then Throw New InternalException ' Helper.Assert(IsDecimalLiteral)        '    Return DirectCast(Me, DecimalLiteralToken)        'End Function        ''' <summary>        ''' Compares this token to any of the specified tokens.         ''' Returns true if any token matches.        ''' </summary>        ''' <param name="AnySpecial"></param>        ''' <returns></returns>        ''' <remarks></remarks>        Public Overridable Overloads Function Equals(ByVal ParamArray AnySpecial() As KS) As Boolean            'For i As Integer = 0 To VB.UBound(AnySpecial)            '    If Equals(AnySpecial(i)) = True Then Return True            'Next            Return False        End Function        Public Overridable Overloads Function Equals(ByVal Special As KS) As Boolean            'Compiler.Report.WriteLine(vbnc.Report.ReportLevels.Debug, "Token.Equals(KS) called on type " & Me.GetType.ToString)            Return False        End Function        Public Overridable Overloads Function Equals(ByVal Identifier As String) As Boolean            'Compiler.Report.WriteLine(vbnc.Report.ReportLevels.Debug, "Token.Equals(String) called on type " & Me.GetType.ToString)            Return False        End Function        Public Overrides Function Equals(ByVal obj As Object) As Boolean            'If TypeOf obj Is Token Then            '    Return Equals(DirectCast(obj, Token))            'Else            '    Throw New InternalException            'End If        End Function        Overloads Function Equals(ByVal obj As Token) As Boolean            'If Me.IsIdentifier AndAlso obj.IsIdentifier Then            '    Return Me.AsIdentifier.Equals(obj.AsIdentifier)            'ElseIf Me.IsLiteral AndAlso obj.IsLiteral Then            '    Return Me.AsLiteral.Equals(obj.AsLiteral)            'Else            '    Return False            'End If        End Function        ''' <summary>        ''' Returns true if currenttoken = Public,Private,Friend,Protected or Static.        ''' </summary>        ''' <returns></returns>        ''' <remarks></remarks>        Function IsScopeKeyword() As Boolean            'Dim keyword As KeywordToken = TryCast(Me, KeywordToken)            'If keyword IsNot Nothing Then            '    Select Case keyword.Keyword            '        Case KS.Public, KS.Private, KS.Friend, KS.Protected, KS.Static            '            Return True            '        Case KS.Else            '            Return False            '    End Select            'Else            '    Return False            'End If        End Function        Function IsEndOfCode() As Boolean            'Return TypeOf Me Is EndOfCodeToken        End Function        Function IsEndOfFile() As Boolean            'Return TypeOf Me Is EndOfFileToken        End Function        Function IsEndOfStatement() As Boolean            ' Return isEndOfLine(True) OrElse Equals(KS.Colon)        End Function        Function IsEndOfLine(Optional ByVal onlyEndOfLine As Boolean = False) As Boolean            'If onlyEndOfLine Then            '    Return TypeOf Me Is EndOfLineToken AndAlso TypeOf Me Is EndOfFileToken = False            'Else            '    Return TypeOf Me Is EndOfLineToken            'End If        End Function#If DEBUG Then    MustOverride Overloads Overrides Sub Dump(ByVal Dumper As IndentedTextWriter)    MustOverride Overrides Function ToString() As String#End If        Shared Operator =(ByVal Token As Token, ByVal Identifier As String) As Boolean            'If Token Is Nothing AndAlso Identifier = "" Then            '    Return True            'ElseIf Token Is Nothing Then            '    Return False            'ElseIf Not TypeOf Token Is IdentifierToken Then            '    Return False            'Else            '    Return DirectCast(Token, IdentifierToken) = Identifier            'End If        End Operator        Shared Operator <>(ByVal Token As Token, ByVal Identifier As String) As Boolean            'Return Not Token = Identifier        End Operator        Shared Operator =(ByVal Token As Token, ByVal Special As KS) As Boolean            'If Token Is Nothing Then Return False            'Return (Token.IsKeyword() AndAlso Token.AsKeyword.Keyword = Special) OrElse _            '       (Token.IsSymbol AndAlso Token.AsSymbol.Symbol = Special)        End Operator        Shared Operator <>(ByVal Token As Token, ByVal Special As KS) As Boolean            'Return Not Token = Special        End Operator    End Class    Public MustInherit Class LiteralToken(Of Type)        Inherits Token        Implements ILiteralToken        Private m_Value As Type        Private m_Type As BuiltInDataTypes        Private m_LiteralTypeCharacter As LiteralTypeCharacters_Characters        Public Overloads Function Equals(ByVal Token As ILiteralToken) As Boolean Implements ILiteralToken.Equals            'If Me.LiteralType = Token.LiteralType Then            '    Return CBool(Microsoft.VisualBasic.CompilerServices.Operators.CompareObjectEqual(Token.LiteralValue, Me.LiteralValue, False))            'Else            '    Return False            'End If        End Function#If DEBUG Then    Public Overrides Sub Dump(ByVal Dumper As IndentedTextWriter)        'Dumper.Write(ToString)    End Sub    Sub DumpLiteralTypeCharacter(ByVal Dumper As IndentedTextWriter)        'If m_LiteralTypeCharacter <> LiteralTypeCharacters_Characters.None Then        '    Dumper.Write(LiteralTypeCharacters.GetTypeCharacter(m_LiteralTypeCharacter))        'End If    End Sub#End If        Public Overrides Function ToString() As String            'Return m_Value.ToString        End Function        ReadOnly Property Literal() As Type            Get                'Return m_Value            End Get        End Property        ReadOnly Property LiteralValue() As Object Implements ILiteralToken.LiteralValue            Get                'Return m_Value            End Get        End Property        Public ReadOnly Property LiteralTypeCharacterCache() As LiteralTypeCharacters_Characters            Get                'Return m_LiteralTypeCharacter            End Get        End Property        Sub New(ByVal Span As Span, ByVal Type As BuiltInDataTypes, ByVal Compiler As Compiler, ByVal LiteralTypeCharacter As LiteralTypeCharacters_Characters, ByVal Literal As Type)            MyBase.New(Span, Compiler)            'm_Type = Type            'm_LiteralTypeCharacter = LiteralTypeCharacter            'm_Value = Literal            'Helper.Assert(m_Type <> BuiltInDataTypes.Object)        End Sub        ReadOnly Property LiteralType() As TypeCode Implements ILiteralToken.LiteralType            Get                'Return TypeResolution.BuiltInTypeToTypeCode(m_Type)            End Get        End Property    End Class    Public Class FloatingPointLiteralToken(Of Type As Structure)        Inherits LiteralToken(Of Type)        Sub New(ByVal Range As Span, ByVal Literal As Type, ByVal Type As BuiltInDataTypes, ByVal Compiler As Compiler, ByVal TypeCharacter As LiteralTypeCharacters_Characters)            MyBase.New(Range, Type, Compiler, TypeCharacter, Literal)        End Sub    End Class    Public Enum BuiltInDataTypes        [Boolean] = KS.Boolean        [Byte] = KS.Byte        [Char] = KS.Char        [Date] = KS.Date        [Decimal] = KS.Decimal        [Double] = KS.Double        [Integer] = KS.Integer        [Long] = KS.Long        [Object] = KS.Object        [Short] = KS.Short        [Single] = KS.Single        [String] = KS.String        [SByte] = KS.[SByte]        [UShort] = KS.[UShort]        [UInteger] = KS.[UInteger]        [ULong] = KS.[ULong]    End Enum    Public Enum LiteralTypeCharacters_Characters        None = -1        <KSEnumString("S")> ShortCharacter        <KSEnumString("US")> UnsignedShortCharacter        <KSEnumString("I")> IntegerCharacter        <KSEnumString("UI")> UnsignedIntegerCharacter        <KSEnumString("L")> LongCharacter        <KSEnumString("UL")> UnsignedLongCharacter        <KSEnumString("%")> IntegerTypeCharacter        <KSEnumString("&")> LongTypeCharacter        <KSEnumString("F")> SingleCharacter        <KSEnumString("R")> DoubleCharacter        DecimalCharacter        SingleTypeCharacter        DoubleTypeCharacter        DecimalTypeCharacter    End Enum    Public Class Compiler        Inherits BaseObject        Shared Function Main() As Integer        End Function    End Class

⌨️ 快捷键说明

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