📄 token.vb
字号:
' ' Visual Basic.Net Compiler' Copyright (C) 2004 - 2007 Rolf Bjarne Kvinge, RKvinge@novell.com' ' This library is free software; you can redistribute it and/or' modify it under the terms of the GNU Lesser General Public' License as published by the Free Software Foundation; either' version 2.1 of the License, or (at your option) any later version.' ' This library is distributed in the hope that it will be useful,' but WITHOUT ANY WARRANTY; without even the implied warranty of' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU' Lesser General Public License for more details.' ' You should have received a copy of the GNU Lesser General Public' License along with this library; if not, write to the Free Software' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA' Public Class Token Private m_Location As Span 'Long Private m_TokenType As TokenType 'Byte Private m_TokenData1 As Byte Private m_TokenObject As Object Shared Function IsSomething(ByVal Token As Token) As Boolean Return Token IsNot Nothing AndAlso Token.IsSomething End Function Function IsSomething() As Boolean Return m_TokenType <> TokenType.None End Function ReadOnly Property Name() As String Get Return Identifier End Get End Property ReadOnly Property HasTypeCharacter() As Boolean Get Return IsIdentifier() AndAlso TypeCharacter <> TypeCharacters.Characters.None End Get End Property Property TypeCharacter() As TypeCharacters.Characters Get Return CType(m_TokenData1, TypeCharacters.Characters) End Get Set(ByVal value As TypeCharacters.Characters) m_TokenData1 = CType(value, LiteralTypeCharacters_Characters) End Set End Property Public Overrides Function ToString() As String If Me.IsIdentifier Then Return Me.Identifier Else Return "<Token>" End If End Function Shared Function CreateIdentifierToken(ByVal Location As Span, ByVal Identifier As String, ByVal TypeCharacter As TypeCharacters.Characters, ByVal Escaped As Boolean) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Identifier result.m_TokenObject = Identifier result.m_TokenData1 = CType(TypeCharacter, LiteralTypeCharacters_Characters) Return result End Function Shared Function CreateIdentifierToken(ByVal CopyFrom As Token, ByVal Name As String) As Token Dim result As New Token(CopyFrom.Location) result.m_TokenType = TokenType.Identifier result.m_TokenObject = Name result.m_TokenData1 = CopyFrom.m_TokenData1 Return result End Function Shared Function CreateEndOfCodeToken() As Token Dim result As New Token(Span.CommandLineSpan) result.m_TokenType = TokenType.EndOfCode Return result End Function Shared Function CreateEndOfLineToken(ByVal Location As Span) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.EndOfLine Return result End Function Shared Function CreateEndOfFileToken(ByVal Location As Span) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.EndOfFile Return result End Function Shared Function CreateKeywordToken(ByVal Location As Span, ByVal Keyword As KS) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Keyword result.m_TokenData1 = Keyword Return result End Function Shared Function CreateDateToken(ByVal Location As Span, ByVal Value As Date) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.DateLiteral result.m_TokenObject = Value Return result End Function Shared Function CreateCharToken(ByVal Location As Span, ByVal Value As Char) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.CharLiteral result.m_TokenObject = Value Return result End Function Shared Function CreateDecimalToken(ByVal Location As Span, ByVal Value As Decimal, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.DecimalLiteral result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter Return result End Function Shared Function CreateSingleToken(ByVal Location As Span, ByVal Value As Single, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.SingleLiteral result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter Return result End Function Shared Function CreateDoubleToken(ByVal Location As Span, ByVal Value As Double, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.DoubleLiteral result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter Return result End Function Shared Function CreateInt16Token(ByVal Location As Span, ByVal Value As Short, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Int16Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateInt32Token(ByVal Location As Span, ByVal Value As Integer, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Int32Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateInt64Token(ByVal Location As Span, ByVal Value As Long, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Int64Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateUInt16Token(ByVal Location As Span, ByVal Value As UShort, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.UInt16Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateUInt32Token(ByVal Location As Span, ByVal Value As UInteger, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.UInt32Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateUInt64Token(ByVal Location As Span, ByVal Value As ULong, ByVal base As IntegerBase, ByVal TypeCharacter As LiteralTypeCharacters_Characters) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.UInt64Literal result.m_TokenObject = Value result.m_TokenData1 = TypeCharacter 'result.m_TokenData2 = base Return result End Function Shared Function CreateStringLiteral(ByVal Location As Span, ByVal Value As String) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.StringLiteral result.m_TokenObject = Value Return result End Function Shared Function CreateSymbolToken(ByVal Location As Span, ByVal Symbol As KS) As Token Dim result As New Token(Location) result.m_TokenType = TokenType.Symbol result.m_TokenData1 = Symbol Return result End Function ReadOnly Property Location() As Span Get Return m_Location End Get End Property Sub New(ByVal Span As Span) m_Location = Span End Sub Function IdentiferOrKeywordIdentifier() As String If IsKeyword() Then Return Identifier ElseIf IsIdentifier() Then Return Identifier Else Throw New InternalException() End If End Function Function IsSpecial() As Boolean Return IsKeyword() OrElse IsSymbol() End Function ReadOnly Property AsSpecial() As KS Get If IsKeyword() Then Return Keyword ElseIf IsSymbol() Then Return Symbol Else Throw New InternalException() End If End Get End Property Function IsKeyword() As Boolean Return m_TokenType = TokenType.Keyword End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -