📄 labeldeclarationstatement.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' ''' <summary>''' LabelDeclarationStatement ::= LabelName ":"''' LabelName ::= Identifier | IntLiteral''' </summary>''' <remarks></remarks>Public Class LabelDeclarationStatement Inherits Statement ''' <summary> ''' LabelName ::= Identifier | IntLiteral ''' </summary> ''' <remarks></remarks> Private m_Label As Token Private m_LabelBuilder As Nullable(Of Label) Public Overrides Function ResolveTypeReferences() As Boolean Return True End Function Sub New(ByVal Parent As ParsedObject, ByVal Label As Token) MyBase.New(Parent) m_Label = Label End Sub Shared Function CanBeMe(ByVal tm As tm) As Boolean Return tm.PeekToken = KS.Colon AndAlso (tm.CurrentToken.IsIntegerLiteral OrElse tm.CurrentToken.IsIdentifier) End Function Friend Overrides Function GenerateCode(ByVal Info As EmitInfo) As Boolean Dim result As Boolean = True Info.ILGen.MarkLabel(LabelBuilder) Return result End Function Public Overrides Function ResolveStatement(ByVal Info As ResolveInfo) As Boolean Dim result As Boolean = True Compiler.Helper.AddCheck("Check if the label name is unique.") Return result End Function ReadOnly Property LabelBuilder() As Label Get If m_LabelBuilder.HasValue = False Then m_LabelBuilder = Me.FindFirstParent(Of IMethod).ILGenerator.DefineLabel End If Return m_LabelBuilder.Value End Get End Property ReadOnly Property Label() As Token Get Return m_Label End Get End Property '#If DEBUG Then ' Public Sub Dump(ByVal Dumper As IndentedTextWriter) ' Dim tmp As Integer = Dumper.IndentLevel ' Dumper.IndentLevel = 0 ' m_Label.Dump(Dumper) ' Dumper.WriteLine(":") ' dumper.IndentLevel = tmp ' End Sub '#End IfEnd Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -