摘自:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbls7/html/vblrfVBSpec12.htm
本节总结 Visual Basic 语言的语法。有关如何阅读语法的信息,请参见语法表示法。
词法
Start ::= [ LogicalLine+ ](初始值 ::= [ 逻辑行+ ])
LogicalLine ::= [ LogicalLineElement+ ] [ Comment ] LineTerminator(逻辑行 ::= [ 逻辑行元素+ ] [ 注释 ] 行结束符)
LogicalLineElement ::= WhiteSpace | Token(逻辑行元素 ::= 空白 | 标记)
Token ::= Identifier | Keyword | Literal | Separator | Operator(标记 ::= 标识符 | 关键字 | 文本 | 分隔符 | 运算符)
字符和行
Character ::= < any Unicode character except a LineTerminator >(字符 ::= < 除行结束符外的任何 Unicode 字符 >)
行结束符
LineTerminator ::=(行结束符 ::=)
< Unicode carriage return character (0x000D) >(< Unicode 回车符 (0x000D) >)|
< Unicode line feed character (0x000A) >(< Unicode 换行符 (0x000A) >)|
< Unicode carriage return character > < Unicode line feed character >(< Unicode 回车符 > < Unicode 换行符 >)|
< Unicode line separator character (0x2028) >(< Unicode 行分隔符 (0x2028) >)|
< Unicode paragraph separator character (0x2029) >(< Unicode 段落分隔符 (0x2029) >)
行继续
LineContinuation ::= WhiteSpace _ [ WhiteSpace+ ] LineTerminator(行继续 ::= 空白 _ [ 空白+ ] 行结束符)
空白
WhiteSpace ::= < Unicode blank characters (class Zs) > | LineContinuation(空白 ::= < Unicode 空白字符(类 Zs)> | 行继续)
注释
Comment ::= CommentMarker [ Character+ ](注释 ::= 注释标记 [ 字符+ ])
CommentMarker ::= ' | REM(注释标记 ::= ' | REM)
标识符
Identifier ::=(标识符 ::=)
NonEscapedIdentifier [ TypeCharacter ](非转义标识符 [ 类型字符 ])|
EscapedIdentifier(转义标识符)
NonEscapedIdentifier ::= < IdentifierName but not Keyword >(非转义标识符 ::= < 标识符名,但不能是关键字 >)
EscapedIdentifier ::= [ IdentifierName ](转义标识符 ::= [ 标识符名 ])
IdentifierName ::= IdentifierStart [ IdentifierCharacter+ ](标识符名 ::= 标识符初始值 [ 标识符字符+ ])
IdentifierStart ::=(标识符初始值 ::=)
AlphaCharacter(字母字符)|
UnderscoreCharacter IdentifierCharacter(下划线字符标识符字符)
IdentifierCharacter ::=(标识符字符 ::=)
UnderscoreCharacter(下划线字符)|
AlphaCharacter(字母字符)|
NumericCharacter(数字字符)|
CombiningCharacter(组合字符)|
FormattingCharacter(格式化字符)
AlphaCharacter ::= < Unicode alphabetic character (classes Lu, Ll, Lt, Lm, Lo, Nl) >(字母字符 ::= < Unicode 字母字符(类 Lu、Ll、Lt、Lm、Lo、Nl)>)
NumericCharacter ::= < Unicode decimal digit character (class Nd) >(数字字符 ::= < Unicode 十进制数字字符(类 Nd)>)
CombiningCharacter ::= < Unicode combining character (classes Mn, Mc) >(组合字符 ::= < Unicode 组合字符(类 Mn、Mc)>)
FormattingCharacter ::= < Unicode formatting character (class Cf) >(格式化字符 ::= < Unicode 格式化字符(类 Cf)>)
UnderscoreCharacter ::= < Unicode connection character (class Pc) >(下划线字符 ::= < Unicode 连接字符(类 Pc)>)
IdentifierOrKeyword ::= Identifier | Keyword(标识符或关键字 ::= 标识符 | 关键字)
类型字符
TypeCharacter ::=(类型字符 ::=)
IntegerTypeCharacter(Integer 类型字符)|
LongTypeCharacter(Long 类型字符)|
DecimalTypeCharacter(Decimal 类型字符)|
SingleTypeCharacter(Single 类型字符)|
DoubleTypeCharacter(Double 类型字符)|
StringTypeCharacter(String 类型字符)
IntegerTypeCharacter ::= %(Integer 类型字符 ::= %)
LongTypeCharacter ::= &(Long 类型字符 ::= &)
DecimalTypeCharacter ::= @(Decimal 类型字符 ::= @)
SingleTypeCharacter ::= !(Single 类型字符 ::= !)
DoubleTypeCharacter ::= #(Double 类型字符 ::= #)
StringTypeCharacter ::= $(String 类型字符 ::= $)
关键字
Keyword ::= < member of keyword table at Keywords >(关键字 ::= < 关键字中关键字表的成员 >)
文本
Literal ::= BooleanLiteral | NumericLiteral | StringLiteral | CharacterLiteral | DateLiteral | Nothing(文本 ::= 布尔值 | 数值 | 字符串 | 字符 | 日期 | Nothing)
NumericLiteral ::= IntegerLiteral | FloatingPointLiteral(数值 ::= 整数 | 浮点数)
布尔值
BooleanLiteral ::= True | False
整数
IntegerLiteral ::= IntegralLiteralValue [ IntegralTypeCharacter ](整数 ::= 整数值 [ 整型字符 ])
IntegralLiteralValue ::= IntLiteral | HexLiteral | OctalLiteral(整数值 ::= 十进制整数 | 十六进制整数 | 八进制整数)
IntegralTypeCharacter ::=(整型字符 ::=)
ShortCharacter(短整数字符)|
IntegerCharacter(整数字符)|
LongCharacter(长整数字符)|
IntegerTypeCharacter(Integer 类型字符)|
LongTypeCharacter(Long 类型字符)
ShortCharacter ::= S(短整数字符 ::= S)
IntegerCharacter ::= I(整数字符 ::= I)
LongCharacter ::= L(长整数字符 ::= L)
IntLiteral ::= Digit+(十进制整数 ::= 数字+)
HexLiteral ::= & H HexDigit+(十六进制整数 ::= & H 十六进制数字+)
OctalLiteral ::= & O OctalDigit+(八进制整数 ::= & O 八进制数字+)
Digit(数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
HexDigit(十六进制数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F
OctalDigit(八进制数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
浮点数
FloatingPointLiteral ::=(浮点数 ::=)
FloatingPointLiteralValue [ FloatingPointTypeCharacter ](浮点值 [ 浮点类型字符 ])|
IntLiteral FloatingPointTypeCharacter(整数浮点类型字符)
FloatingPointTypeCharacter ::=(浮点类型字符 ::=)
SingleCharacter(单精度字符)|
DoubleCharacter(双精度字符)|
DecimalCharacter(十进制字符)|
SingleTypeCharacter(Single 类型字符)|
DoubleTypeCharacter(Double 类型字符)|
DecimalTypeCharacter(Decimal 类型字符)
SingleCharacter ::= F(单精度字符 ::= F)
DoubleCharacter ::= R(双精度字符 ::= R)
DecimalCharacter ::= D(十进制字符 ::= D)
FloatingPointLiteralValue ::=(浮点值 ::=)
IntLiteral . IntLiteral [ Exponent ](整数 .整数 [ 指数 ])|
. IntLiteral [ Exponent ](. 整数 [ 指数 ])|
IntLiteral Exponent(整数指数)
Exponent ::= E [ Sign ] IntLiteral(指数 ::= E [ 符号 ] 整数)
Sign(符号)::= + | -
字符串
StringLiteral ::= " [ StringCharacter+ ] "(字符串 ::= " [ 字符串字符+ ] ")
StringCharacter ::= < Character except for " > | ""(字符串字符 ::= < 除引号 " 之外的字符 > | "")
字符
CharacterLiteral ::= " StringCharacter " C(字符 ::= " 字符串字符 " C)
日期
DateLiteral ::= # [ Whitespace+ ] [ DateValue ] [ Whitespace+ ] [ TimeValue ] [ Whitespace+ ] #(日期 ::= # [ 空白+ ] [ 日期值 ] [ 空白+ ] [ 时间值 ] [ 空白+ ] #)
DateValue ::= MonthValue DateSeparator DayValue DateSeparator YearValue(日期值 ::= 月份值日期分隔符日值日期分隔符年值)
DateSeparator(日期分隔符)::= / | -
TimeValue ::= HourValue [ : MinuteValue ] [ : SecondValue ] [ Whitespace+ ] [ AMPM ](时间值 ::= 小时值 [ : 分钟值 ] [ : 秒钟值 ] [ 空白+ ] [ AMPM ])
MonthValue ::= IntLiteral(月份值 ::= 整数)
DayValue ::= IntLiteral(日值 ::= 整数)
YearValue ::= IntLiteral(年值 ::= 整数)
HourValue ::= IntLiteral(小时值 ::= 整数)
MinuteValue ::= IntLiteral(分钟值 ::= 整数)
SecondValue ::= IntLiteral(秒钟值 ::= 整数)
AMPM ::= AM | PM
Nothing
Nothing ::= Nothing
分隔符
Separator(分隔符)::= ( | ) | ! | # | , | . | :
运算符字符
Operator(运算符)::= & | * | + | - | / | / | ^ | < | = | >
预处理指令
条件编译指令
Source ::= [ ConditionalElement+ ](源 ::= [ 条件元素+ ])
ConditionalElement ::= ConditionalIfGroup | ConditionalConstantDeclaration | LogicalLine(条件元素 ::= 条件 If 组 | 条件常数声明 | 逻辑行)
条件常数
ConditionalConstantDeclaration ::= # Const IdentifierOrKeyword = ConstantExpression LineTerminator(条件常数声明 ::= # Const 标识符或关键字 = 常数表达式行结束符)
条件编译语句
ConditionalElseIfGroup ::=(条件 ElseIf 组 ::=)
# ElseIf ConstantExpression [ Then ] LineTerminator(# ElseIf 常数表达式 [ Then ] 行结束符)
[ ConditionalElement+ ]([ 条件元素+ ])
外部源指令
Source ::= [ ExternalSourceElement+ ](源 ::= [ 外部源元素+ ])
ExternalSourceElement ::= ExternalSourceGroup | LogicalLine(外部源元素 ::= 外部源组 | 逻辑行)
ExternalSourceGroup ::=(外部源组 ::=)
# ExternalSource ( StringLiteral , IntLiteral ) LineTerminator(# ExternalSource ( 字符串 , 整数 ) 行结束符)
[ LogicalLine+ ]([ 逻辑行+ ])
# End ExternalSource LineTerminator(# End ExternalSource 行结束符)
区域指令
Start ::= [ RegionElement+ ](初始值 ::= [ 区域元素+ ])
RegionElement ::= RegionGroup | LogicalLine(区域元素 ::= 区域组 | 逻辑行)
RegionGroup ::=(区域组 ::=)
# Region [ NoDebug ] StringLiteral LineTerminator(# Region [ NoDebug ] 字符串行结束符)
[ LogicalLine+ ]([ 逻辑行+ ])
# End Region LineTerminator(# End Region 行结束符)
ConditionalElseGroup ::=(条件 Else 组 ::=)
# Else LineTerminator(# Else 行结束符)
[ ConditionalElement+ ]([ 条件元素+ ])
一般概念
可访问性
AccessModifier ::= Public | Protected | Friend | Private(访问修饰符 ::= Public | Protected | Friend | Private)
命名空间和类型名称
QualifiedIdentifier ::=(限定标识符 ::=)
Identifier(标识符)|
QualifiedIdentifier .IdentifierOrKeyword(限定标识符 .标识符或关键字)
属性块
Attributes ::= < AttributeList >(属性 ::= < 属性列表 >)
AttributeList ::=(属性列表 ::=)
Attribute(属性)|
AttributeList , Attribute(属性列表 , 属性)
Attribute ::= [ AttributeModifier : ] TypeName [ ( [ AttributeArguments ] ) ](属性 ::= [ 属性修饰符 : ] 类型名 [ ( [ 属性参数 ] ) ])
AttributeModifier ::= Assembly | Module(属性修饰符 ::= Assembly | Module)
属性参数
AttributeArguments ::=(属性参数 ::=)
AttributePositionalArgumentList(属性定位参数列表)|
AttributePositionalArgumentList , VariablePropertyInitializerList(属性定位参数列表 , 变量属性初始值设定项列表)|
VariablePropertyInitializerList(变量属性初始值设定项列表)
AttributePositionalArgumentList ::=(属性定位参数列表 ::=)
ConstantExpression(常数表达式)|
AttributePositionalArgumentList , ConstantExpression(属性定位参数列表 , 常数表达式)
VariablePropertyInitializerList ::=(变量属性初始值设定项列表 ::=)
VariablePropertyInitializer(变量属性初始值设定项)
VariablePropertyInitializerList , VariablePropertyInitializer(变量属性初始值设定项列表 , 变量属性初始值设定项)
VariablePropertyInitializer ::= Identifier : = ConstantExpression(变量属性初始值设定项 ::= 标识符 : = 常数表达式)
源文件和命名空间
Source ::=(源 ::=)
[ OptionDirective+ ]([ Option 指令+ ])
[ ImportsDirective+ ]([ Imports 指令+ ])
[ Attributes ]([ 属性 ])
[ NamespaceBody ]([ 命名空间体 ])
编译选项
OptionDirective ::= OptionExplicitDirective | OptionStrictDirective | OptionCompareDirective(Option 指令 ::= Option Explicit 指令 | Option Strict 指令 | Option Compare 指令)
Option Explicit 语句
OptionExplicitDirective ::= Option Explicit [ OnOff ] LineTerminator(Option Explicit 指令 ::= Option Explicit [ 开关 ] 行结束符)
OnOff(开关)::= On | Off
Option Strict 语句
OptionStrictDirective ::= Option Strict [ OnOff ] LineTerminator(Option Strict 指令 ::= Option Strict [ 开关 ] 行结束符)
Option Compare 语句
OptionCompareDirective ::= Option Compare CompareOption LineTerminator(Option Compare 指令 ::= Option Compare 比较选项行结束符)
CompareOption ::= Binary | Text(比较选项 ::= Binary | Text)
Imports 语句
ImportsDirective ::= Imports ImportsClauses LineTerminator(Imports 指令 ::= Imports Imports 子句行结束符)
ImportsClauses ::=(Imports 子句 ::=)
ImportsClause(Imports 子句)|
ImportsClauses , ImportsClause(Imports 子句 , Imports 子句)
ImportsClause ::= ImportsAliasClause | RegularImportsClause(Imports 子句 ::= Imports 别名子句 | 规则 Imports 子句)
导入别名
ImportsAliasClause ::= Identifier = QualifiedIdentifier(Imports 别名子句 ::= 标识符 = 限定标识符)
常规导入
ImportsNamespaceClause ::= QualifiedIdentifier(Imports 命名空间子句 ::= 限定标识符)
命名空间声明
NamespaceDeclaration ::=(命名空间声明 ::=)
Namespace QualifiedIdentifier LineTerminator(Namespace 限定标识符行结束符)
[ NamespaceMemberDeclaration+ ]([ 命名空间成员声明+ ])
End Namespace LineTerminator(End Namespace 行结束符)
命名空间成员
NamespaceMemberDeclaration ::=(命名空间成员声明 ::=)
NamespaceDeclaration(命名空间声明)|
TypeDeclaration(类型声明)
TypeDeclaration ::=(类型声明 ::=)
ModuleDeclaration(模块声明)|
NonModuleDeclaration(非模块声明)
NonModuleDeclaration ::=(非模块声明 ::=)
EnumDeclaration(枚举声明)|
StructureDeclaration(结构声明)|
InterfaceDeclaration(接口声明)|
ClassDeclaration(类声明)|
DelegateDeclaration(委托声明)
类型
TypeName ::= QualifiedIdentifier | Object | PrimitiveTypeName | ClassTypeName | ArrayTypeName(类型名 ::= 限定标识符 | Object | 基元类型名 | 类类型名 | 数组类型名)
基元类型
PrimitiveTypeName ::= NumericTypeName | Boolean | Date | Char(基元类型名 ::= 数值类型名 | Boolean | Date | Char)
NumericTypeName ::= IntegralTypeName | FloatingPointTypeName | Decimal(数值类型名 ::= 整型名 | 浮点类型名 | Decimal)
IntegralTypeName ::= Byte | Short | Integer | Long(整型名 ::= Byte | Short | Integer | Long)
FloatingPointTypeName ::= Single | Double(浮点类型名 ::= Single | Double)
枚举
EnumDeclaration ::=(枚举声明 ::=)
[ Attributes ] [ EnumModifier+ ] Enum Identifier([ 属性 ] [ 枚举修饰符+ ] Enum 标识符)
[ As IntegralTypeName ] LineTerminator([ As 整型名 ] 行结束符)
EnumMemberDeclaration+(枚举成员声明+)
End Enum LineTerminator(End Enum 行结束符)
EnumModifier ::= AccessModifier | Shadows(枚举修饰符 ::= 访问修饰符 | Shadows)
枚举成员
EnumMemberDeclaration ::=(枚举成员声明 ::=)
[ Attributes ] Identifier [ = ConstantExpression ] LineTerminator([ 属性 ] 标识符 [ = 常数表达式 ] 行结束符)
结构
StructDeclaration ::=(结构声明 ::=)
[ Attributes ] [ StructModifier+ ] Structure Identifier LineTerminator([ 属性 ] [ 结构修饰符+ ] Structure 标识符行结束符)
[ TypeImplementsClause+ ]([ 类型 Implements 子句+ ])
[ StructMemberDeclaration+ ]([ 结构成员声明+ ])
End Structure LineTerminator(End Structure 行结束符)
StructureModifier ::= AccessModifier | Shadows(结构修饰符 ::= 访问修饰符 | Shadows)
结构接口实现
TypeImplementsClause ::= Implements Implements LineTerminator(类型 Implements 子句 ::= Implements 实现行结束符)
Implements ::=(实现 ::=)
TypeName(类型名)|
Implements , TypeName(实现 , 类型名)
结构成员
StructMemberDeclaration ::=(结构成员声明 ::=)
NonModuleDeclaration(非模块声明)
VariableMemberDeclaration(变量成员声明)|
ConstantMemberDeclaration(常数成员声明)|
EventMemberDeclaration(事件成员声明)|
MethodMemberDeclaration(方法成员声明)|
PropertyMemberDeclaration(属性成员声明)|
SharedConstructorDeclaration(共享构造函数声明)
类
ClassTypeName ::= String(类类型名 ::= String)
ClassDeclaration ::=(类声明 ::=)
[ Attributes ] [ ClassModifier+ ] Class Identifier LineTerminator([ 属性 ] [ 类修饰符+ ] Class 标识符行结束符)
[ ClassBase ]([ 类基 ])
[ TypeImplementsClause+ ]([ 类型 Implements 子句+ ])
[ ClassMemberDeclaration+ ]([ 类成员声明+ ])
End Class LineTerminator(End Class 行结束符)
类修饰符
ClassModifier ::= AccessModifier | Shadows | MustInherit | NotInheritable(类修饰符 ::= 访问修饰符 | Shadows | MustInherit | NotInheritable)
类基规范
ClassBase ::= Inherits TypeName LineTerminator(类基 ::= Inherits 类型名行结束符)
类成员
ClassMemberDeclaration ::=(类成员声明 ::=)
NonModuleDeclaration(非模块声明)|
EventMemberDeclaration(事件成员声明)|
VariableMemberDeclaration(变量成员声明)|
ConstantMemberDeclaration(常数成员声明)|
MethodMemberDeclaration(方法成员声明)|
PropertyMemberDeclaration(属性成员声明)|
ConstructorMemberDeclaration(构造函数成员声明)
标准模块
ModuleDeclaration ::=(模块声明 ::=)
[ Attributes ] [ AccessModifier+ ] Module Identifier LineTerminator([ 属性 ] [ 访问修饰符+ ] Module 标识符行结束符)
[ ModuleMemberDeclaration+ ]([ 模块成员声明+ ])
End Module LineTerminator(End Module 行结束符)
标准模块成员
ModuleMemberDeclaration ::=(模块成员声明 ::=)
NonModuleDeclaration(非模块声明)|
VariableMemberDeclaration(变量成员声明)|
ConstantMemberDeclaration(常数成员声明)|
EventMemberDeclaration(事件成员声明)|
MethodMemberDeclaration(方法成员声明)|
PropertyMemberDeclaration(属性成员声明)|
SharedConstructorDeclaration(共享构造函数声明)
接口
InterfaceDeclaration ::=(接口声明 ::=)
[ Attributes ] [ InterfaceModifier+ ] Interface Identifier LineTerminator([ 属性 ] [ 接口修饰符+ ] Interface 标识符行结束符)
[ InterfaceBases+ ]([ 接口基+ ])
[ InterfaceMemberDeclaration+ ]([ 接口成员声明+ ])
End Interface LineTerminator(End Interface 行结束符)
InterfaceModifier ::= AccessModifier | Shadows(枚举修饰符 ::= 访问修饰符 | Shadows)
接口继承
InterfaceBase ::= Inherits InterfaceBases LineTerminator(接口基 ::= Inherits 接口基行结束符)
InterfaceBases ::=(接口基 ::=)
TypeName(类型名)
InterfaceBases , TypeName(接口基 , 类型名)
接口成员
InterfaceMemberDeclaration ::=(接口成员声明 ::=)
NonModuleDeclaration(非模块声明)|
EventMemberDeclaration(事件成员声明)|
MethodMemberDeclaration(方法成员声明)|
PropertyMemberDeclaration(属性成员声明)
数组
ArrayTypeName ::= TypeName ArrayTypeModifier(数组类型名 ::= 类型名数组类型修饰符)
ArrayTypeModifier ::= ( [ RankList ] )(数组类型修饰符 ::= ( [ 秩列表 ] ))
RankList ::=(秩列表 ::=)
, |
RankList ,(秩列表 ,)
ArrayNameModifier ::= ArrayTypeModifier | ArrayInitializationModifier(数组名修饰符 ::= 数组类型修饰符 | 数组初始化修饰符)
委托
DelegateTypeDeclaration ::=(委托类型声明 ::=)
[ DelegateModifier+ ] Delegate MethodDeclaration([ 委托修饰符+ ] Delegate 方法声明)
DelegateModifier ::= AccessModifier | Shadows(委托修饰符 ::= 访问修饰符 | Shadows)
类型成员
方法
MethodMemberDeclaration ::= MethodDeclaration | ExternalMethodDeclaration(方法成员声明 ::= 方法声明 | 外部方法声明)
常规方法声明
MethodDeclaration ::= SubDeclaration | FunctionDeclaration(方法声明 ::= Sub 声明 | 函数声明)
SubDeclaration ::=(Sub 声明 ::=)
[ Attributes ] [ ProcedureModifier+ ] Sub Identifier [ ( [ FormalParameterList ] ) ]([ 属性 ] [ 过程修饰符+ ] Sub 标识符 [ ( [ 形参表 ] ) ])
[ HandlesOrImplements ] LineTerminator([ 句柄或实现 ] 行结束符)
[ Block ]([ 块 ])
[ End Sub LineTerminator ]([ End Sub 行结束符 ])
FunctionDeclaration ::=(函数声明 ::=)
[ Attributes ] [ ProcedureModifier+ ] Function Identifier([ 属性 ] [ 过程修饰符+ ] Function 标识符)
[ ( [ FormalParameterList ] ) ] [ As [ Attributes ] TypeName ]([ ( [ 形参表 ] ) ] [ As [ 属性 ] 类型名 ])
[ HandlesOrImplements ] LineTerminator([ 句柄或实现 ] 行结束符)
[ Block ]([ 块 ])
[ End Function LineTerminator ]([ End Function 行结束符 ])
ProcedureModifier ::=(过程修饰符 ::=)
AccessModifier(访问修饰符)|
Shadows |
Shared |
Overridable |
NotOverridable |
MustOverride |
Overrides |
Overloads
HandlesOrImplements ::= HandlesClause | MethodImplementsClause(句柄或实现 ::= Handles 子句 | 方法 Implements 子句)
外部方法声明
ExternalMethodDeclaration ::= ExternalSubDeclaration | ExternalFunctionDeclaration(外部方法声明 ::= 外部 Sub 声明 | 外部函数声明)
ExternalSubDeclaration ::=(外部 Sub 声明 ::=)
[ Attributes ] [ ExternalMethodModifier+ ] Declare [ CharsetModifier ] Sub Identifier([ 属性 ] [ 外部方法修饰符+ ] Declare [ 字符集修饰符 ] Sub 标识符)
LibraryClause [ AliasClause ] [ ( [ FormalParameterList ] ) ] LineTerminator(Lib 子句 [ Alias 子句 ] [ ( [ 形参表 ] ) ] 行结束符)
ExternalFunctionDeclaration ::=(外部函数声明 ::=)
[ Attributes ] [ ExternalMethodModifier+ ] Declare [ CharsetModifier ] Function([ 属性 ] [ 外部方法修饰符+ ] Declare [ 字符集修饰符 ] Function)
Identifier LibraryClause [ AliasClause ] [ ( [ FormalParameterList ] ) ](标识符 Lib 子句 [ Alias 子句 ] [ ( [ 形参表 ] ) ])
[ As [ Attributes ] TypeName ] LineTerminator([ As [ 属性 ] 类型名 ] 行结束符)
ExternalMethodModifier ::= AccessModifier | Shadows | Overloads(外部方法修饰符 ::= 访问修饰符 | Shadows | Overloads)
CharsetModifier ::= Ansi | Unicode | Auto(字符集修饰符 ::= Ansi | Unicode | Auto)
LibraryClause ::= Lib StringLiteral(Lib 子句 ::= Lib 字符串)
AliasClause ::= Alias StringLiteral(Alias 子句 ::= Alias 字符串)
方法参数
FormalParameterList ::=(形参表 ::=)
FormalParameter(形参)|
FormalParameterList , FormalParameter(形参表 , 形参)
FormalParameter ::=(形参 ::=)
[ Attributes ] ParameterModifier+ Identifier [ As TypeName ]([ 属性 ] 参数修饰符+ 标识符 [ As 类型名 ])
[ = ConstantExpression ]([ = 常数表达式 ])
ParameterModifier ::= ByRef | ByVal | Optional | ParamArray(参数修饰符 ::= ByVal | ByRef | Optional | ParamArray)
接口方法实现
ImplementsClause ::= [ Implements ImplementsList ](Implements 子句 ::= [ Implements Implements 列表 ])
ImplementsList ::=(Implements 列表 ::=)
InterfaceMemberSpecifier(接口成员说明符)|
ImplementsList , InterfaceMemberSpecifier(Implements 列表 , 接口成员说明符)
InterfaceMemberSpecifier ::= TypeName . Identifier(接口成员说明符 ::= 类型名 . 标识符)
事件处理
HandlesClause ::= [ Handles EventHandlesList ](Handles 子句 ::= [ Handles 事件 Handles 列表 ])
EventHandlesList ::=(事件 Handles 列表 ::=)
EventMemberSpecifier(事件成员说明符)|
EventHandlesList , EventMemberSpecifier(事件 Handles 列表 , 事件成员说明符)
EventMemberSpecifier ::=(事件成员说明符 ::=)
Identifier . [ Identifier . ] Identifier(标识符 . [ 标识符 . ] 标识符)
MyBase . [ Identifier . ] Identifier(MyBase . [ 标识符 . ] 标识符)
构造函数
ConstructorMemberDeclaration ::= InstanceConstructorDeclaration | SharedConstructorDeclaration(构造函数成员声明 ::= 实例构造函数声明 | 共享构造函数声明)
实例构造函数
InstanceConstructorDeclaration ::=(实例构造函数声明 ::=)
[ Attributes ] [ InstanceConstructorModifier+ ] Sub New([ 属性 ] [ 实例构造函数修饰符+ ] Sub New)
[ ( [ FormalParameterList ] ) ] LineTerminator([ ( [ 形参表 ] ) ] 行结束符)
[ Block ]([ 块 ])
End Sub LineTerminator(End Sub 行结束符)
InstanceConstructorModifier ::= AccessModifier | Overloads(实例构造函数修饰符 ::= 访问修饰符 | Overloads)
共享 (Shared) 构造函数
SharedConstructorDeclaration ::=(共享构造函数声明 ::=)
[ Attributes ] Shared Sub New [ ( ) ] LineTerminator([ 属性 ] Shared Sub New [ ( ) ] 行结束符)
[ Block ]([ 块 ])
End Sub LineTerminator(End Sub 行结束符)
事件
EventMemberDeclaration ::=(事件成员声明 ::=)
[ Attributes ] [ EventModifiers+ ] Event Identifier ParametersOrType([ 属性 ] [ 事件修饰符+ ] Event 标识符参数或类型)
[ ImplementsClause ] LineTerminator([ Implements 子句 ] 行结束符)
ParametersOrType ::=(参数或类型 ::=)
[ ( [ FormalParameterList ] ) ]([ ( [ 形参表 ] ) ])|
As TypeName(As 类型名)
常数
ConstantMemberDeclaration ::=(常数成员声明 ::=)
[ Attributes ] [ ConstantModifier+ ] Const Identifier [ As TypeName ] =([ 属性 ] [ 常数修饰符+ ] Const 标识符 [ As 类型名 ] =)
ConstantExpression LineTerminator(常数表达式行结束符)
ConstantModifier ::= AccessModifiers | Shadows(常量修饰符 ::= 访问修饰符 | Shadows)
变量
VariableMemberDeclaration ::=(变量成员声明 ::=)
[ Attributes ] [ VariableModifier+ ] [ Dim ] VariableDeclarators LineTerminator([ 属性 ] [ 变量修饰符+ ] [ Dim ] 变量声明符行结束符)
VariableModifier ::= AccessModifiers | Shadows | Shared | ReadOnly | WithEvents(变量修饰符 ::= 访问修饰符 | Shadows | Shared | ReadOnly | WithEvents)
VariableDeclarators ::=(变量声明符 ::=)
VariableDeclarator(变量声明符)|
VariableDeclarators , VariableDeclarator(变量声明符 , 变量声明符)
VariableDeclarator ::=(变量声明符 ::=)
VariableIdentifiers [ As TypeName ](变量标识符 [ As 类型名 ])|
VariableIdentifier(变量标识符)
[ As [ New ] TypeName [ ( ArgumentList ) ] ] [ = VariableInitializer ]([ As [ New ] 类型名 [ ( 参数列表 ) ] ] [ = 变量初始值设定项 ])
VariableIdentifiers ::=(变量标识符 ::=)
VariableIdentifier(变量标识符)|
VariableIdentifiers , VariableIdentifier(变量标识符 , 变量标识符)
VariableIdentifier ::= Identifier [ ArrayNameModifier ](变量标识符 ::= 标识符 [ 数组名修饰符 ])
变量初始值设定项
VariableInitializer ::= RegularInitializer | ArrayElementInitializer(变量初始值设定项 ::= 规则初始值设定项 | 数组元素初始值设定项)
规则初始值设定项
RegularInitializer ::= Expression(规则初始值设定项::= 表达式)
数组元素初始值设定项
ArrayElementInitializer ::= { [ VariableInitializerList ] }(数组元素初始值设定项 ::= { [ 变量初始值设定项列表 ] })
VariableInitializerList ::=(变量初始值设定项列表 ::=)
VariableInitializer(变量初始值设定项)|
VariableInitializerList , VariableInitializer(变量初始值设定项列表 , 变量初始值设定项)
VariableInitializer ::= Expression | ArrayElementInitializer(变量初始值设定项 ::= 表达式 | 数组元素初始值设定项)
数组大小初始值设定项
ArrayInitializationModifier ::= ( InitializationRankList )(数组初始化修饰符 ::= ( 初始化秩列表 ))
InitializationRankList ::=(初始化秩列表 ::=)
Expression(表达式)|
InitializationRankList , Expression(初始化秩列表 , 表达式)
属性
PropertyMemberDeclaration ::=(属性成员声明 ::=)
[ Attributes ] PropertyModifier+ Property Identifier [ ( [ FormalParameterList ] ) ]([ 属性 ] 属性修饰符+ Property 标识符 [ ( [ 形参表 ] ) ])
[ As TypeName ] [ MethodImplementsClause ] LineTerminator([ As 类型名 ] [ 方法 Implements 子句 ] 行结束符)
PropertyAccessorDeclaration+(属性访问器声明+)
[ End Property LineTerminator ]([ End Property 行结束符 ])
PropertyModifier ::= ProcedureModifier | Default | ReadOnly | WriteOnly(属性修饰符 ::= 过程修饰符 | Default | ReadOnly | WriteOnly)
PropertyAccessorDeclaration ::= PropertyGetDeclaration | PropertySetDeclaration(属性访问器声明 ::= 属性 Get 声明 | 属性 Set 声明)
Getter 声明
PropertyGetDeclaration ::=(属性 Get 声明 ::=)
[ Attributes ] Get LineTerminator([ 属性 ] Get 行结束符)
[ Block ]([ 块 ])
End Get(End Get)
Setter 声明
PropertySetDeclaration ::=(属性 Set 声明 ::=)
[ Attributes ] Set LineTerminator([ 属性 ] Set 行结束符)
[ Block ]([ 块 ])
End Set(End Set)
语句
块
Block ::= [ LabeledLine+ ](块 ::= [ 标记行+ ])
LabeledLine ::= [ LabelName : ] [ Statements ] LineTerminator(标记行 ::= [ 标签名 : ] [ 语句 ] 行结束符)
LabelName ::= Identifier | IntLiteral(标签名 ::= 标识符 | 整数)
Statements ::=(语句 ::=)
[ Statement ]([ 语句 ])|
Statements [ Statement ](语句 [ 语句 ])
局部声明语句
LocalDeclarationStatement ::= LocalModifier LocalDeclarator StatementTerminator(局部声明语句 ::= 局部修饰符局部声明符语句结束符)
LocalModifier ::= Dim | Const(局部修饰符 ::= Dim | Const)
LocalDeclarator ::=(局部声明符 ::=)
LocalIdentifiers [ As TypeName ](局部标识符 [ As 类型名 ])
Identifier [ ArrayNameModifier ](标识符 [ 数组名修饰符 ])
[ As [ New ] TypeName [ ( [ ArgumentList ] ) ] ] [ = VariableInitializer ]([ As [ New ] 类型名 [ ( [ 参数列表 ] ) ] ] [ = 变量初始值设定项 ])
LocalIdentifiers ::=(局部标识符 ::=)
Identifier [ ArrayNameModifier ](标识符 [ 数组名修饰符 ])|
LocalIdentifiers , Identifier [ ArrayNameModifier ](局部标识符 , 标识符 [ 数组名修饰符 ])
LocalVariableName ::= Identifier(局部变量名 ::= 标识符)
With 语句
WithStatement ::=(With 语句 ::=)
With Expression StatementTerminator(With 表达式语句结束符)
[ Block ]([ 块 ])
End With StatementTerminator(End With 语句结束符)
SyncLock 语句
SyncLockStatement ::=(SyncLock 语句 ::=)
SyncLock Expression StatementTerminator(SyncLock 表达式语句结束符)
[ Block ]([ 块 ])
End SyncLock StatementTerminator(End SyncLock 语句结束符)
事件语句
EventStatement ::=(事件语句 ::=)
RaiseEventStatement(RaiseEvent 语句)|
AddHandlerStatement(AddHandler 语句)|
RemoveHandlerStatement(RemoveHandler 语句)
RaiseEvent 语句
RaiseEventStatement ::= RaiseEvent EventMemberName(RaiseEvent 语句 ::= RaiseEvent 事件成员名)
[ ( [ ArgumentList ] ) ] StatementTerminator([ ( [ 参数列表 ] ) ] 语句结束符)
AddHandler 和 RemoveHandler 语句
AddHandlerStatement ::= AddHandler HandlerArguments StatementTerminator(AddHandler 语句 ::= AddHandler 处理程序参数语句结束符)
RemoveHandlerStatement ::= RemoveHandler HandlerArguments StatementTerminator(RemoveHandler 语句 ::= RemoveHandler 处理程序参数语句结束符)
HandlerArguments ::= EventExpression , ArgumentExpression(处理程序参数 ::= 事件表达式 , 参数表达式)
赋值语句
AssignmentStatement ::=(赋值语句 ::=)
SimpleAssignmentStatement(简单赋值语句)|
DelegateAssignmentStatement(委托赋值语句)|
CompoundAssignmentStatement(复合赋值语句)|
MidAssignmentStatement(Mid 赋值语句)
简单赋值语句
RegularAssignmentStatement ::= VariableExpression = Expression StatementTerminator(规则赋值语句 ::= 变量表达式 = 表达式语句结束符)
VariableExpression ::= Expression(变量表达式 ::= 表达式)
委托赋值语句
DelegateAssignmentStatement ::=(委托赋值语句 ::=)
VariableExpression = AddressOf InvocationTargetExpression StatementTerminator(变量表达式 = AddressOf 调用目标表达式语句结束符)
复合赋值语句
CompoundAssignmentStatement ::= VariableExpression CompoundBinaryOperator =(复合赋值语句 ::= 变量表达式复合二元运算符 =)
Expression StatementTerminator(表达式语句结束符)
CompoundBinaryOperator(复合二元运算符)::= ^ | * | / | / | + | - | &
Mid 赋值语句
MidAssignmentStatement ::= Mid [ $ ] ( VariableExpression , Expression [ , Expression ] ) =
Expression StatementTerminator((Mid 赋值语句 ::= Mid [ $ ] ( 变量表达式 , 表达式 [ , 表达式 ] ) =
表达式语句结束符)
调用语句
InvocationStatement ::= [ Call ] InvocationExpression StatementTerminator(调用语句 ::= [ Call ] 调用表达式语句结束符)
条件语句
ConditionalStatement ::= IfStatement | SelectStatement(条件语句 ::= If 语句 | Select 语句)
If...Then...Else 语句
IfStatement ::= BlockIfStatement | LineIfThenStatement(If 语句 ::= 块 If 语句 | 行 IfThen 语句)
BlockIfStatement ::=(块 If 语句 ::=)
If BooleanExpression [ Then ] StatementTerminator(If 布尔表达式 [ Then ] 语句结束符)
[ Block ]([ 块 ])
[ ElseIfStatement+ ]([ ElseIf 语句+ ])
[ ElseStatement ]([ Else 语句 ])
End If StatementTerminator(End If 语句结束符)
ElseIfStatement ::=(ElseIf 语句 ::=)
ElseIf BooleanExpression [ Then ] StatementTerminator(ElseIf 布尔表达式 [ Then ] 语句结束符)
[ Block ]([ 块 ])
ElseStatement ::=(Else 语句 ::=)
Else StatementTerminator(Else 语句结束符)
[ Block ]([ 块 ])
LineIfThenStatement ::= If BooleanExpression Then [Statements ](行 IfThen 语句 ::= If 布尔表达式 Then [语句 ])
[ Else Statements ] StatementTerminator([ Else 语句 ] 语句结束符)
BooleanExpression ::= Expression(布尔表达式 ::= 表达式)
Select...Case 语句
SelectStatement ::=(Select 语句 ::=)
Select [ Case ] Expression StatementTerminator(Select [ Case ] 表达式语句结束符)
[ CaseStatement+ ]([ Case 语句+ ])
[ CaseElseStatement ]([ CaseElse 语句 ])
End Select StatementTerminator(End Select 语句结束符)
CaseStatement ::=(Case 语句 ::=)
Case CaseClauses StatementTerminator(Case Case 子句语句结束符)
[ Block ]([ 块 ])
CaseClauses ::=(Case 子句 ::=)
CaseClause(Case 子句)|
CaseClauses , CaseClause(Case 子句 , Case 子句)
CaseClause ::=(Case 子句 ::=)
[ Is ] ComparisonOperator Expression([ Is ] 比较运算符表达式)|
Expression [ To Expression ](表达式 [ To 表达式 ])
ComparisonOperator(比较运算符)::= = | < > | < | > | = > | = <
CaseElseStatement ::=(CaseElse 语句 ::=)
Case Else StatementTerminator(Case Else 语句结束符)
[ Block ]([ 块 ])
循环语句
LoopStatement ::=(Loop 语句 ::=)
WhileStatement(While 语句)|
DoLoopStatement(DoLoop 语句)|
ForStatement(For 语句)|
ForEachStatement(ForEach 语句)
While...End While 和 Do...Loop 语句
WhileStatement ::=(While 语句 ::=)
While BooleanExpression StatementTerminator(While 布尔表达式语句结束符)
[ Block ]([ 块 ])
End While StatementTerminator(End While 语句结束符)
DoLoopStatement ::=(DoLoop 语句 ::=)
Do [ WhileOrUntil BooleanExpression ] StatementTerminator(Do [ While 或 Until 布尔表达式 ] 语句结束符)
[ Block ]([ 块 ])
Loop [ WhileOrUntil BooleanExpression ] StatementTerminator(Loop [ While 或 Until 布尔表达式 ] 语句结束符)
WhileOrUntil ::= While | Until(While 或 Until ::= While | Until)
For...Next 语句
ForStatement ::=
For LoopControlVariable = Expression To Expression [ Step Expression ] StatementTerminator
[ Block ]
Next [ NextExpressionList ] StatementTerminator(For 语句 ::=
For 循环控制变量 = 表达式 To 表达式 [ Step 表达式 ] 语句结束符
[ 块 ]
Next [ Next 表达式列表 ] 语句结束符)
LoopControlVariable ::=
Identifier As TypeName |
Expression(循环控制变量 ::=
标识符 As 类型名 | 表达式)
NextExpressionList ::=(Next 表达式列表 ::=)
VariableExpression(变量表达式)|
NextExpressionList , VariableExpression(Next 表达式列表 , 变量表达式)
For Each...Next 语句
ForEachStatement ::=
For Each LoopControlVariable In Expression StatementTerminator
[ Block ]
Next [ VariableExpression ] StatementTerminator(For Each 语句 ::=
For Each 循环控制变量 In 表达式语句结束符
[ 块 ]
Next [ 变量表达式 ] 语句结束符)
异常处理语句
ExceptionHandlingStatement ::=(异常处理语句 ::=)
StructuredExceptionStatement(结构化异常语句)|
UnstructuredExceptionStatement(非结构化异常语句)
结构化异常处理语句
StructuredExceptionStatement ::=(结构化异常语句 ::=)
ThrowStatement(Throw 语句)|
TryStatement(Try 语句)
ThrowStatement ::= Throw [ Expression ] StatementTerminator(Throw 语句 ::= Throw [ 表达式 ] 语句结束符)
TryStatement ::=(Try 语句 ::=)
Try StatementTerminator(Try 语句结束符)
[ Block ]([ 块 ])
[ CatchStatement+ ]([ Catch 语句+ ])
[ FinallyStatement ]([ Finally 语句 ])
End Try StatementTerminator(End Try 语句结束符)
Finally 块
FinallyStatement ::=(Finally 语句 ::=)
Finally StatementTerminator(Finally 语句结束符)
[ Block ]([ 块 ])
Catch 块
CatchStatement ::=(Catch 语句 ::=)
Catch [ Identifier As TypeName ] [ When BooleanExpression ] StatementTerminator(Catch [ 标识符 As 类型名 ] [ When 布尔表达式 ] 语句结束符)
[ Block ]([ 块 ])
非结构化异常处理语句
UnstructuredExceptionStatement ::=(非结构化异常语句 ::=)
ErrorStatement(Error 语句)|
OnErrorStatement(OnError 语句)|
ResumeStatement(Resume 语句)
Error 语句
ErrorStatement ::= Error Expression StatementTerminator(Error 语句 ::= Error 表达式语句结束符)
On Error 语句
OnErrorStatement ::= On Error ErrorClause StatementTerminator(OnError 语句 ::= On Error Error 子句语句结束符)
ErrorClause ::=(Error 子句 ::=)
Resume Next |
GoTo -1 |
GoTo 0 |
GotoStatement(Goto 语句)
Resume 语句
ResumeStatement ::= Resume [ ResumeClause ] StatementTerminator(Resume 语句 ::= Resume [ Resume 子句 ] 语句结束符)
ResumeClause ::= Next | LabelName(Resume 子句 ::= Next | 标签名)
控制流语句
ControlFlowStatement ::=(控制流语句 ::=)
GotoStatement(Goto 语句)|
ExitStatement(Exit 语句)|
StopStatement(Stop 语句)|
EndStatement(End 语句)|
ReturnStatement(Return 语句)
GotoStatement ::= GoTo LabelName StatementTerminator(Goto 语句 ::= GoTo 标签名语句结束符)
ExitStatement ::= Exit ExitKind StatementTerminator(Exit 语句 ::= Exit 退出类型语句结束符)
ExitKind(退出类型)::= Do | For | While | Select | Sub | Function | Property | Try
StopStatement ::= Stop StatementTerminator(Stop 语句 ::= Stop 语句结束符)
EndStatement ::= End StatementTerminator(End 语句 ::= End 语句结束符)
ReturnStatement ::= Return [ Expression ](Return 语句 ::= Return [ 表达式 ])
数组处理语句
ArrayHandlingStatement ::=(数组处理语句 ::=)
RedimStatement(Redim 语句)|
EraseStatement(Erase 语句)
ReDim 语句
RedimStatement ::= ReDim [ Preserve ] RedimClauses+ StatementTerminator(Redim 表达式 ::= ReDim [ Preserve ] Redim 子句+ 语句结束符)
RedimClauses ::=(Redim 子句 ::=)
RedimClauses(Redim 子句)|
RedimClause , RedimClauses(Redim 子句 , Redim 子句)
RedimClause ::= VariableExpression ArrayInitializationModifier(Redim 子句 ::= 变量表达式数组初始化修饰符)
Erase 语句
EraseStatement ::= Erase VariableExpressions StatementTerminator(Erase 语句 ::= Erase 变量表达式语句结束符)
VariableExpressions ::=(变量表达式 ::=)
VariableExpression(变量表达式)|
VariableExpressions , VariableExpression(变量表达式 , 变量表达式)
表达式
Expression ::=(表达式 ::=)
SimpleExpression(简单表达式)|
InvocationExpression(调用表达式)|
MemberAccessExpression(成员访问表达式)|
IndexExpression(索引表达式)|
NewExpression(New 表达式)|
CastExpression(强制转换表达式)|
TypeOfExpression(TypeOf 表达式)|
OperatorExpression(运算符表达式)
常数表达式
ConstantExpression ::= Expression(常数表达式 ::= 表达式)
变量表达式
VariableExpression ::= Expression(变量表达式 ::= 表达式)
事件表达式
EventExpression ::=(事件表达式 ::=)
Expression . IdentifierOrKeyword(表达式 . 标识符或关键字)|
[ MeExpression . ] IdentifierOrKeyword([ Me 表达式 . ] 标识符或关键字)|
EventMemberName(事件成员名)
简单表达式
SimpleExpression ::=(简单表达式 ::=)
LiteralExpression(文本表达式)|
ParenthesizedExpression(带括号的表达式)|
MeExpression(Me 表达式)|
MetaTypeExpression(元类型表达式)|
LocalVariableExpression(局部变量表达式)|
TypeOfIsOperatorExpression(TypeOfIs 运算符表达式)|
IsOperatorExpression(Is 运算符表达式)
文本表达式
LiteralExpression ::= Literal(文本表达式 ::= 文本)
带括号的表达式
ParenthesizedExpression ::= ( Expression )(带括号的表达式 ::= ( 表达式 ))
Me 表达式
MeExpression ::= Me(Me 表达式 ::= Me)
GetType 表达式
MetaTypeExpression ::= GetType ( TypeName )(元类型表达式 ::= GetType ( 类型名 ))
局部变量表达式
LocalVariableExpression ::= LocalVariableName(局部变量表达式 ::= 局部变量名)
TypeOf...Is 表达式
TypeOfIsOperatorExpression ::= TypeOf Expression Is TypeName(TypeOfIs 运算符表达式 ::= TypeOf 表达式 Is 类型名)
Is 表达式
IsOperatorExpression ::= Expression Is Expression(Is 运算符表达式 ::= 表达式 Is 表达式)
调用表达式
InvocationExpression ::= InvocationTargetExpression [ ( [ ArgumentList ] ) ](调用表达式 ::= 调用目标表达式 [ ( [ 参数列表 ] ) ])
InvocationTargetExpression ::=(调用目标表达式 ::=)
DelegateExpression(委托表达式)|
[ [ Expression ] . ] IdentifierOrKeyword([ [ 表达式 ] . ] 标识符或关键字)|
MyClass . IdentifierOrKeyword(MyClass . 标识符或关键字)|
MyBase . IdentifierOrKeyword(MyBase . 标识符或关键字)|
MethodMemberName(方法成员名)
DelegateExpression ::= Expression(委托表达式 ::= 表达式)
参数列表
ArgumentList ::=(参数列表 ::=)
PositionalArgumentList , NamedArgumentList(定位参数列表 , 命名参数列表)|
PositionalArgumentList(定位参数列表)|
NamedArgumentList(命名参数列表)
PositionalArgumentList ::=(定位参数列表 ::=)
ArgumentExpression(参数表达式)|
PositionalArgumentList , [ ArgumentExpression ](定位参数列表 , [ 参数表达式 ])
NamedArgumentList ::=(命名参数列表 ::=)
Identifier : = ArgumentExpression(标识符 : = 参数表达式)|
NamedArgumentList , Identifier : = ArgumentExpression(命名参数列表 , 标识符 : = 参数表达式)
ArgumentExpression ::= Expression | DelegateArgumentExpression(参数表达式 ::= 表达式 | 委托参数表达式)
委托参数表达式
DelegateArgumentExpression ::= AddressOf InvocationTargetExpression(委托参数表达式 ::= AddressOf 调用目标表达式)
成员访问表达式
MemberAccessExpression ::=(成员访问表达式 ::=)
[ [ Expression ] . ] IdentifierOrKeyword([ [ 表达式 ] . ] 标识符或关键字)|
VariableMemberName(变量成员名)|
PropertyMemberName(属性成员名)|
ConstantMemberName(常数成员名)|
EnumMemberName(枚举成员名)|
DictionaryAccessExpression(字典访问表达式)
字典成员访问
DictionaryAccessExpression ::= [ Expression ] ! IdentifierOrKeyword(字典访问表达式 ::= [ 表达式 ] ! 标识符或关键字)
索引表达式
IndexExpression ::= Expression ( ArgumentList )(索引表达式 ::= 表达式 ( 参数列表 ))
New 表达式
NewExpression ::=(New 表达式 ::=)
ObjectCreationExpression(对象创建表达式)|
ArrayCreationExpression(数组创建表达式)|
DelegateCreationExpression(委托创建表达式)
对象创建表达式
ObjectCreationExpression ::= New TypeName [ ( [ ArgumentList ] ) ](对象创建表达式 ::= New 类型名 [ ( [ 参数列表 ] ) ])
数组创建表达式
ArrayCreationExpression ::=(数组创建表达式 ::=)
New TypeName ( ArgumentList ) ArrayElementInitializer(New 类型名 ( 参数列表 ) 数组元素初始值设定项)|
New ArrayTypeName ArrayElementInitializer(New 数组类型名数组元素初始值设定项)
委托创建表达式
DelegateCreationExpression ::= New TypeName ( InvocationTargetExpression )(委托创建表达式 ::= New 类型名 ( 调用目标表达式 ))
强制转换表达式
CastExpression ::=(强制转换表达式 ::=)
CType ( Expression , TypeName )(CType ( 表达式 , 类型名 )) |
CastTarget ( Expression )(强制转换目标 ( 表达式 ))
CastTarget(强制转换目标)::=
CBool | CByte | CChar | CDate | CDec | CDbl |
CInt | CLng | CObj | CShort | CSng | CStr
运算符
OperatorExpression ::= UnaryOperatorExpression | BinaryOperatorExpression(运算符表达式 ::= 一元运算符表达式 | 二元运算符表达式)
BinaryOperatorExpression ::=(二元运算符表达式 ::=)
ArithmeticOperatorExpression(算术运算符表达式)|
RelationalOperatorExpression(关系运算符表达式)|
LikeOperatorExpression(Like 运算符表达式)|
ConcatenationOperatorExpression(串联运算符表达式)|
ShortCircuitLogicalOperatorExpression(短路逻辑运算符表达式)|
LogicalOperatorExpression(逻辑运算符表达式)|
ShiftOperatorExpression(移位运算符表达式)
一元运算符
UnaryOperatorExpression ::=(一元运算符表达式 ::=)
UnaryPlusExpression(一元加表达式)|
UnaryMinusExpression(一元减表达式)|
UnaryLogicalNotExpression(一元逻辑 Not 表达式)
一元加运算符
UnaryPlusExpression ::= + Expression(一元加表达式 ::= + 表达式)
一元减运算符
UnaryMinusExpression ::= - Expression(一元减表达式 ::= - 表达式)
逻辑非运算符
UnaryLogicalNotExpression ::= Not Expression(一元逻辑 Not 表达式 ::= Not 表达式)
算术运算符
ArithmeticOperatorExpression ::=(算术运算符表达式 ::=)
AdditionOperatorExpression(加法运算符表达式)|
SubtractionOperatorExpression(减法运算符表达式)|
MultiplicationOperatorExpression(乘法运算符表达式)|
DivisionOperatorExpression(除法运算符表达式)|
ModuloOperatorExpression(模运算符表达式)|
ExponentOperatorExpression(幂运算符表达式)
加法运算符
AdditionOperatorExpression ::= Expression + Expression(加法运算符表达式 ::= 表达式 + 表达式)
减法运算符
SubtractionOperatorExpression ::= Expression - Expression(减法运算符表达式 ::= 表达式 - 表达式)
乘法运算符
MultiplicationOperatorExpression ::= Expression * Expression(乘法运算符表达式 ::= 表达式 * 表达式)
除法运算符
DivisionOperatorExpression ::=(除法运算符表达式 ::=)
RegularDivisionOperatorExpression(规则除法运算符表达式)|
IntegerDivisionOperatorExpression(整数除法运算符表达式)
RegularDivisionOperatorExpression ::= Expression / Expression(规则除法运算符表达式 ::= 表达式 / 表达式)
IntegerDivisionOperatorExpression ::= Expression / Expression(整数除法运算符表达式 ::= 表达式 / 表达式)
Mod 运算符
ModOperatorExpression ::= Expression Mod Expression(Mod 运算符表达式 ::= 表达式 Mod 表达式)
幂运算符
ExponentOperatorExpression ::= Expression ^ Expression(幂运算符表达式 ::= 表达式 ^ 表达式)
关系运算符
RelationalOperatorExpression ::=(关系运算符表达式 ::=)
Expression = Expression(表达式 = 表达式)|
Expression < > Expression(表达式 < > 表达式)|
Expression < Expression(表达式 < 表达式)|
Expression > Expression(表达式 > 表达式)|
Expression < = Expression(表达式 < = 表达式)|
Expression > = Expression(表达式 > = 表达式)
Like 运算符
LikeOperatorExpression ::= Expression Like Expression(Like 运算符表达式 ::= 表达式 Like 表达式)
串联运算符
ConcatenationOperatorExpression ::= Expression & Expression(串联运算符表达式 ::= 表达式 & 表达式)
逻辑运算符
LogicalOperatorExpression ::=(逻辑运算符表达式 ::=)
Expression And Expression(表达式 And 表达式)|
Expression Or Expression(表达式 Or 表达式)|
Expression Xor Expression(表达式 Xor 表达式)|
Expression AndAlso Expression(表达式 AndAlso 表达式)|
Expression OrElse Expression(表达式 OrElse 表达式)
移位运算符
ShiftOperatorExpression ::=(移位运算符表达式 ::=)
Expression << Expression(表达式 << 表达式)|
Expression >> Expression(表达式 >> 表达式)