in src/Compilers/VisualBasic/Portable/Scanner/KeywordTable.vb [7:264]
Shared Sub New()
Const New7to8 As UShort = 1US << 8
Const QueryClause As UShort = 1US << 9
Const CanFollowExpr As UShort = 1US << 10
Const None As UShort = 0US
Dim keywordInitData As UShort() = New UShort() {
SyntaxKind.AddHandlerKeyword, None,
SyntaxKind.AddressOfKeyword, None,
SyntaxKind.AliasKeyword, None,
SyntaxKind.AndKeyword, PrecedenceAnd Or CanFollowExpr,
SyntaxKind.AndAlsoKeyword, PrecedenceAnd Or CanFollowExpr,
SyntaxKind.AsKeyword, None,
SyntaxKind.BooleanKeyword, None,
SyntaxKind.ByRefKeyword, None,
SyntaxKind.ByteKeyword, None,
SyntaxKind.ByValKeyword, None,
SyntaxKind.CallKeyword, None,
SyntaxKind.CaseKeyword, None,
SyntaxKind.CatchKeyword, None,
SyntaxKind.CBoolKeyword, None,
SyntaxKind.CByteKeyword, None,
SyntaxKind.CCharKeyword, None,
SyntaxKind.CDateKeyword, None,
SyntaxKind.CDecKeyword, None,
SyntaxKind.CDblKeyword, None,
SyntaxKind.CharKeyword, None,
SyntaxKind.CIntKeyword, None,
SyntaxKind.ClassKeyword, None,
SyntaxKind.CLngKeyword, None,
SyntaxKind.CObjKeyword, None,
SyntaxKind.ConstKeyword, None,
SyntaxKind.ContinueKeyword, New7to8,
SyntaxKind.CSByteKeyword, New7to8,
SyntaxKind.CShortKeyword, None,
SyntaxKind.CSngKeyword, None,
SyntaxKind.CStrKeyword, None,
SyntaxKind.CTypeKeyword, None,
SyntaxKind.CUIntKeyword, New7to8,
SyntaxKind.CULngKeyword, New7to8,
SyntaxKind.CUShortKeyword, New7to8,
SyntaxKind.DateKeyword, None,
SyntaxKind.DecimalKeyword, None,
SyntaxKind.DeclareKeyword, None,
SyntaxKind.DefaultKeyword, None,
SyntaxKind.DelegateKeyword, None,
SyntaxKind.DimKeyword, None,
SyntaxKind.DirectCastKeyword, None,
SyntaxKind.DoKeyword, None,
SyntaxKind.DoubleKeyword, None,
SyntaxKind.EachKeyword, None,
SyntaxKind.ElseKeyword, CanFollowExpr,
SyntaxKind.ElseIfKeyword, None,
SyntaxKind.EndKeyword, None,
SyntaxKind.EnumKeyword, None,
SyntaxKind.EraseKeyword, None,
SyntaxKind.ErrorKeyword, None,
SyntaxKind.EventKeyword, None,
SyntaxKind.ExitKeyword, None,
SyntaxKind.FalseKeyword, None,
SyntaxKind.FinallyKeyword, None,
SyntaxKind.ForKeyword, None,
SyntaxKind.FriendKeyword, None,
SyntaxKind.FunctionKeyword, None,
SyntaxKind.GetKeyword, None,
SyntaxKind.GetTypeKeyword, None,
SyntaxKind.GetXmlNamespaceKeyword, None,
SyntaxKind.GlobalKeyword, New7to8,
SyntaxKind.GoToKeyword, None,
SyntaxKind.HandlesKeyword, None,
SyntaxKind.IfKeyword, None,
SyntaxKind.ImplementsKeyword, CanFollowExpr,
SyntaxKind.ImportsKeyword, None,
SyntaxKind.InKeyword, CanFollowExpr,
SyntaxKind.InheritsKeyword, None,
SyntaxKind.IntegerKeyword, None,
SyntaxKind.InterfaceKeyword, None,
SyntaxKind.IsKeyword, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.IsNotKeyword, PrecedenceRelational Or New7to8 Or CanFollowExpr,
SyntaxKind.LetKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.LibKeyword, None,
SyntaxKind.LikeKeyword, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.LongKeyword, None,
SyntaxKind.LoopKeyword, None,
SyntaxKind.MeKeyword, None,
SyntaxKind.ModKeyword, PrecedenceModulus Or CanFollowExpr,
SyntaxKind.ModuleKeyword, None,
SyntaxKind.MustInheritKeyword, None,
SyntaxKind.MustOverrideKeyword, None,
SyntaxKind.MyBaseKeyword, None,
SyntaxKind.MyClassKeyword, None,
SyntaxKind.NameOfKeyword, None,
SyntaxKind.NamespaceKeyword, None,
SyntaxKind.NarrowingKeyword, New7to8,
SyntaxKind.NextKeyword, None,
SyntaxKind.NewKeyword, None,
SyntaxKind.NotKeyword, PrecedenceNot,
SyntaxKind.NothingKeyword, None,
SyntaxKind.NotInheritableKeyword, None,
SyntaxKind.NotOverridableKeyword, None,
SyntaxKind.ObjectKeyword, None,
SyntaxKind.OfKeyword, New7to8,
SyntaxKind.OnKeyword, CanFollowExpr,
SyntaxKind.OperatorKeyword, New7to8,
SyntaxKind.OptionKeyword, None,
SyntaxKind.OptionalKeyword, None,
SyntaxKind.OrKeyword, PrecedenceOr Or CanFollowExpr,
SyntaxKind.OrElseKeyword, PrecedenceOr Or CanFollowExpr,
SyntaxKind.OverloadsKeyword, None,
SyntaxKind.OverridableKeyword, None,
SyntaxKind.OverridesKeyword, None,
SyntaxKind.ParamArrayKeyword, None,
SyntaxKind.PartialKeyword, New7to8,
SyntaxKind.PrivateKeyword, None,
SyntaxKind.PropertyKeyword, None,
SyntaxKind.ProtectedKeyword, None,
SyntaxKind.PublicKeyword, None,
SyntaxKind.RaiseEventKeyword, None,
SyntaxKind.ReadOnlyKeyword, None,
SyntaxKind.ReferenceKeyword, None,
SyntaxKind.ReDimKeyword, None,
SyntaxKind.REMKeyword, CanFollowExpr,
SyntaxKind.RemoveHandlerKeyword, None,
SyntaxKind.ResumeKeyword, None,
SyntaxKind.ReturnKeyword, None,
SyntaxKind.SByteKeyword, New7to8,
SyntaxKind.SelectKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.SetKeyword, None,
SyntaxKind.ShadowsKeyword, None,
SyntaxKind.SharedKeyword, None,
SyntaxKind.ShortKeyword, None,
SyntaxKind.SingleKeyword, None,
SyntaxKind.StaticKeyword, None,
SyntaxKind.StepKeyword, CanFollowExpr,
SyntaxKind.StopKeyword, None,
SyntaxKind.StringKeyword, None,
SyntaxKind.StructureKeyword, None,
SyntaxKind.SubKeyword, None,
SyntaxKind.SyncLockKeyword, None,
SyntaxKind.ThenKeyword, CanFollowExpr,
SyntaxKind.ThrowKeyword, None,
SyntaxKind.ToKeyword, CanFollowExpr,
SyntaxKind.TrueKeyword, None,
SyntaxKind.TryKeyword, None,
SyntaxKind.TryCastKeyword, New7to8,
SyntaxKind.TypeOfKeyword, None,
SyntaxKind.UIntegerKeyword, New7to8,
SyntaxKind.ULongKeyword, New7to8,
SyntaxKind.UShortKeyword, New7to8,
SyntaxKind.UsingKeyword, New7to8,
SyntaxKind.WhenKeyword, None,
SyntaxKind.WhileKeyword, None,
SyntaxKind.WideningKeyword, New7to8,
SyntaxKind.WithKeyword, None,
SyntaxKind.WithEventsKeyword, None,
SyntaxKind.WriteOnlyKeyword, None,
SyntaxKind.XorKeyword, PrecedenceXor Or CanFollowExpr,
SyntaxKind.AggregateKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.AllKeyword, None,
SyntaxKind.AnsiKeyword, None,
SyntaxKind.AscendingKeyword, CanFollowExpr,
SyntaxKind.AssemblyKeyword, None,
SyntaxKind.AutoKeyword, None,
SyntaxKind.BinaryKeyword, None,
SyntaxKind.ByKeyword, CanFollowExpr,
SyntaxKind.CompareKeyword, None,
SyntaxKind.CustomKeyword, None,
SyntaxKind.DescendingKeyword, CanFollowExpr,
SyntaxKind.DisableKeyword, None,
SyntaxKind.DistinctKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.EnableKeyword, None,
SyntaxKind.EqualsKeyword, CanFollowExpr,
SyntaxKind.ExplicitKeyword, None,
SyntaxKind.ExternalSourceKeyword, None,
SyntaxKind.ExternalChecksumKeyword, None,
SyntaxKind.FromKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.GroupKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.InferKeyword, None,
SyntaxKind.IntoKeyword, CanFollowExpr,
SyntaxKind.IsFalseKeyword, None,
SyntaxKind.IsTrueKeyword, None,
SyntaxKind.JoinKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.KeyKeyword, None,
SyntaxKind.MidKeyword, None,
SyntaxKind.OffKeyword, None,
SyntaxKind.OrderKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.OutKeyword, None,
SyntaxKind.PreserveKeyword, None,
SyntaxKind.RegionKeyword, None,
SyntaxKind.SkipKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.StrictKeyword, None,
SyntaxKind.TextKeyword, None,
SyntaxKind.TakeKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.UnicodeKeyword, None,
SyntaxKind.UntilKeyword, None,
SyntaxKind.WarningKeyword, None,
SyntaxKind.WhereKeyword, QueryClause Or CanFollowExpr,
SyntaxKind.AsyncKeyword, None,
SyntaxKind.AwaitKeyword, PrecedenceAwait,
SyntaxKind.IteratorKeyword, None,
SyntaxKind.YieldKeyword, None,
SyntaxKind.EndIfKeyword, None,
SyntaxKind.GosubKeyword, None,
SyntaxKind.TypeKeyword, None,
SyntaxKind.VariantKeyword, None,
SyntaxKind.WendKeyword, None,
SyntaxKind.CommaToken, CanFollowExpr,
SyntaxKind.AmpersandToken, PrecedenceConcatenate Or CanFollowExpr,
SyntaxKind.SingleQuoteToken, None,
SyntaxKind.OpenParenToken, CanFollowExpr,
SyntaxKind.CloseParenToken, CanFollowExpr,
SyntaxKind.OpenBraceToken, None,
SyntaxKind.CloseBraceToken, CanFollowExpr,
SyntaxKind.AsteriskToken, PrecedenceMultiply Or CanFollowExpr,
SyntaxKind.PlusToken, PrecedenceAdd Or CanFollowExpr,
SyntaxKind.MinusToken, PrecedenceAdd Or CanFollowExpr,
SyntaxKind.SlashToken, PrecedenceMultiply Or CanFollowExpr,
SyntaxKind.LessThanToken, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.LessThanEqualsToken, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.LessThanGreaterThanToken, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.EqualsToken, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.GreaterThanToken, PrecedenceRelational Or CanFollowExpr,
SyntaxKind.GreaterThanEqualsToken, PrecedenceRelational,
SyntaxKind.BackslashToken, PrecedenceIntegerDivide Or CanFollowExpr,
SyntaxKind.CaretToken, PrecedenceExponentiate Or CanFollowExpr,
SyntaxKind.ColonEqualsToken, None,
SyntaxKind.AmpersandEqualsToken, PrecedenceConcatenate,
SyntaxKind.AsteriskEqualsToken, PrecedenceMultiply,
SyntaxKind.PlusEqualsToken, PrecedenceAdd,
SyntaxKind.MinusEqualsToken, PrecedenceAdd,
SyntaxKind.SlashEqualsToken, PrecedenceMultiply,
SyntaxKind.BackslashEqualsToken, PrecedenceIntegerDivide,
SyntaxKind.CaretEqualsToken, PrecedenceExponentiate,
SyntaxKind.LessThanLessThanToken, PrecedenceShift,
SyntaxKind.GreaterThanGreaterThanToken, PrecedenceShift,
SyntaxKind.LessThanLessThanEqualsToken, PrecedenceShift,
SyntaxKind.GreaterThanGreaterThanEqualsToken, PrecedenceShift,
SyntaxKind.PercentGreaterThanToken, CanFollowExpr
}
For i As Integer = 0 To keywordInitData.Length - 1 Step 2
Dim bits = keywordInitData(i + 1)
AddKeyword(
Token:=DirectCast(keywordInitData(i), SyntaxKind),
New7To8:=(bits And New7to8) <> 0,
Precedence:=CType(bits And &HFF, OperatorPrecedence),
isQueryClause:=(bits And QueryClause) <> 0,
canFollowExpr:=(bits And CanFollowExpr) <> 0
)
Next
End Sub