21
Estructura léxica de Visual Basic Los lenguajes de programación, como las lenguas humanas, tienen una estructura léxica. Un código fuente de un programa de Visual Basic consta de fichas. Tokens son elementos de código atómicas. En Visual Basic, tenemos comentarios, variables, literales, operadores delimitadores y palabras clave. Programas de Visual Basic se componen de caracteres del juego de caracteres Unicode. Comentarios Comments son utilizados por los seres humanos para aclarar el código fuente. Todos los comentarios en Visual Basic siguen ya sea el ' carácter o el Rem palabra clave. Option Strict On ' This is comments.vb ' Author: Jan Bodnar ' ZetCode 2010 Module Example Rem program starts here Sub Main() Console.WriteLine("This is comments.vb") End Sub End Module Los comentarios son ignorados por el compilador de Visual Basic. El espacio en blanco El espacio en blanco en Visual Basic se utiliza para separar tokens en el archivo de origen. Se utiliza para mejorar la legibilidad del código fuente. Dim i As Integer Los espacios en blanco son necesarios en algunos lugares. Por ejemplo entre el Dim palabra clave y el nombre de la variable. En otros lugares, está prohibido. No puede estar presente en los identificadores de variables o palabras clave del lenguaje. a=1 b = 2 c = 3

Resumen Gramatical de Visual Basic .NET

  • Upload
    cebueso

  • View
    48

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Resumen Gramatical de Visual Basic .NET

Estructura léxica de Visual BasicLos lenguajes de programación, como las lenguas humanas, tienen una estructura

léxica. Un código fuente de un programa de Visual Basic consta de fichas. Tokens son

elementos de código atómicas. En Visual Basic, tenemos comentarios, variables,

literales, operadores delimitadores y palabras clave.

Programas de Visual Basic se componen de caracteres del juego de caracteres Unicode.

Comentarios

Comments son utilizados por los seres humanos para aclarar el código fuente. Todos los

comentarios en Visual Basic siguen ya sea el ' carácter o el Rem palabra clave.

Option Strict On

' This is comments.vb ' Author: Jan Bodnar' ZetCode 2010

Module Example

Rem program starts here Sub Main() Console.WriteLine("This is comments.vb") End Sub

End Module

Los comentarios son ignorados por el compilador de Visual Basic.

El espacio en blanco

El espacio en blanco en Visual Basic se utiliza para separar tokens en el archivo de

origen. Se utiliza para mejorar la legibilidad del código fuente.

Dim i As Integer

Los espacios en blanco son necesarios en algunos lugares. Por ejemplo entre

el Dim palabra clave y el nombre de la variable. En otros lugares, está prohibido. No

puede estar presente en los identificadores de variables o palabras clave del lenguaje.

a=1

b = 2

c = 3

La cantidad de espacio puesto entre fichas es irrelevante para el compilador de Visual

Basic.

Carácter de continuación de línea

Debemos utilizar un carácter de continuación de línea, si una declaración se extiende

por más de una línea. Esto difiere de los lenguajes basados en C y C.

Console.WriteLine ("La longitud de la primera cadena es" _

+ Str1.Length.ToString () + "caracteres")

Page 2: Resumen Gramatical de Visual Basic .NET

Principalmente por razones de legibilidad, no quiero tener demasiados caracteres en una

línea. Rompemos la línea y continuar en la siguiente línea. En Visual Basic, hay que

utilizar el carácter de continuación de línea, de lo contrario la compilación fallaría.

Variables

A la variable es un identificador, que tiene un valor. En la programación de nuestras

palabras, que se le asigna un valor a una variable. Hablando técnicamente, una variable

es una referencia a una memoria de ordenador, en donde se almacena el valor. Los

nombres de variables pueden tener caracteres alfanuméricos y guiones bajos. Un

identificador puede comenzar con un carácter o un guión bajo. No puede comenzar con

un número. Los nombres de variables no distinguen entre mayúsculas y minúsculas. Esto

significa que, Name, name o NAME se refieren a la misma variable. Los nombres de

variables también no pueden igualar palabras clave del lenguaje.

Dim name23 As String

Dim _col As Integer

Dim birth_date As Date

Estos son identificadores válidos de Visual Basic.

Option Strict On

Module Example

Sub Main()

Dim name As String = "Robert" Dim Name As String = "Julia"

Console.WriteLine(name) Console.WriteLine(Name)

End Sub

End Module

Este código no se compilará. Los identificadores no distinguen entre mayúsculas y

minúsculas.

Literales

Un literal es una representación textual de un valor particular de un tipo. Tipos literales

son: Boolean, Integer, floating point, string, character y date. Técnicamente, un literal se

le asignará un valor en tiempo de compilación, mientras que una variable se le asigna en

tiempo de ejecución.

Dim age As Byte = 29

Dim nationality As String = "Hungarian"

Aquí asignamos dos literales a variables. Número 29 y la cadena " Hungarian " son

literales.

Option Strict On

Page 3: Resumen Gramatical de Visual Basic .NET

Module Example

Sub Main()

Dim sng As Boolean = True Dim name As String = "James" Dim job As String = Nothing Dim age As Byte = 23 Dim weight As Single = 68.5 Dim born As DateTime = DateValue("November 12, 1987")

Console.WriteLine("His name is {0}", name)

If sng Then Console.WriteLine("He is single") Else Console.WriteLine("He is in a relationship") End If

Console.WriteLine("His job is {0}", job) Console.WriteLine("He weighs {0} kilograms", weight) Console.WriteLine("He was born in {0}", _ Format(born, "yyyy"))

End Sub

End Module

En el ejemplo anterior, tenemos otros literales. El literal booleano puede tener

valor True o False. James es una cadena literal. El Nothing representa el valor por defecto

de cualquier tipo de datos. 23 es un entero literal. 68.5 es un literal de coma

flotante. Finalmente, el November 12, 1987 es un literal de fecha.

$ ./literals.exe

His name is James

He is single

His job is

He weighs 68.5 kilograms

He was born in 1987

Esta es la salida del programa.

Operadores

Un operador es un símbolo que se utiliza para llevar a cabo una acción sobre algún

valor.

+ - * / \ ^ &

= += -= *= /= \= ^=

< > &= >>= <<= >= <=

>> <> <<

Estos son los operadores de Visual Basic. Vamos a hablar de los operadores más

adelante en el tutorial.

Page 4: Resumen Gramatical de Visual Basic .NET

Separadores

Un separador es una secuencia de uno o más caracteres utilizados para especificar el

límite entre las regiones separadas, independientes en texto plano o de otro flujo de

datos.

( ) { } ! # , . : := ?

Estos son los separadores de Visual Basic.

Dim language As String = "Visual Basic"

Los personajes dobles se utilizan para marcar el comienzo y el final de una cadena.

Console.WriteLine("Today is {0}", GetToday)

Los paréntesis (corchetes) se utilizan para marcar la firma del método. La firma consta

de los parámetros del método. Las llaves se usan para indicar el valor evaluado.

Dim array() As Integer = { _

2, 4, 5, 6, 7, 3, 2 }

Las llaves también se utilizan para crear matrices.

Palabras clave

Una palabra clave es una palabra reservada en el lenguaje Visual Basic. Las palabras

clave se utilizan para realizar una tarea específica en el programa informático. Por

ejemplo, imprimir un valor, hacer tareas repetitivas o realizar operaciones lógicas. Un

programador no puede utilizar una palabra clave como una variable normal.

Visual Basic es rico en palabras clave. Muchos de ellos se explican en este tutorial. Las

palabras clave incluyen If, Else, Dim, For, Date, Double, Or, Exit  y muchos otros.

Option Strict On

Module Example

Sub Main()

Dim i As Integer

For i = 0 To 35 Step 5 Console.WriteLine(i) Next

End SubEnd Module

En el ejemplo anterior, usamos varias palabras clave. Option, On, Module, Sub, Dim, As,

Integer, For, To, Step, Next, End son palabras clave de Visual Basic.

Page 5: Resumen Gramatical de Visual Basic .NET

12. Resumen gramatical de Visual Basic .NETVisual Studio .NET 2003Esta sección resume la gramática del lenguaje de Visual Basic. Para más información sobre cómo leer la gramática, vea Notación gramatical.Gramática léxicaStart ::= [ LogicalLine+ ]LogicalLine ::= [ LogicalLineElement+ ] [ Comment ] LineTerminatorLogicalLineElement ::= WhiteSpace | TokenToken ::= Identifier | Keyword | Literal | Separator | OperadorCaracteres y líneasCharacter ::= < any Unicode character except a LineTerminator >Terminadores de líneaLineTerminator ::=   < Unicode carriage return character (0x000D) > |   < Unicode line feed character (0x000A) > |   < Unicode carriage return character > < Unicode line feed character > |   < Unicode line separator character (0x2028) > |   < Unicode paragraph separator character (0x2029) >Continuación de líneaLineContinuation ::= WhiteSpace _ [ WhiteSpace+ ] LineTerminatorEspacio en blancoWhiteSpace ::= < Unicode blank characters (class Zs) > | LineContinuationComentariosComment ::= CommentMarker [ Character+ ]CommentMarker ::= ' | REMIdentificadoresIdentifier ::=   NonEscapedIdentifier [ TypeCharacter ] |   EscapedIdentifierNonEscapedIdentifier ::= < IdentifierName but not Keyword >EscapedIdentifier ::= [ IdentifierName ]IdentifierName ::= IdentifierStart [ IdentifierCharacter+ ]IdentifierStart ::=   AlphaCharacter |   UnderscoreCharacter IdentifierCharacterIdentifierCharacter ::=    UnderscoreCharacter |   AlphaCharacter |   NumericCharacter |   CombiningCharacter |   FormattingCharacterAlphaCharacter ::= < Unicode alphabetic character (classes Lu, Ll, Lt, Lm, Lo, Nl) >NumericCharacter ::= < Unicode decimal digit character (class Nd) >CombiningCharacter ::= < Unicode combining character (classes Mn, Mc) >FormattingCharacter ::= < Unicode formatting character (class Cf) >UnderscoreCharacter ::= < Unicode connection character (class Pc) >IdentifierOrKeyword ::= Identifier | Palabra claveCaracteres de tipoTypeCharacter ::=   IntegerTypeCharacter |   LongTypeCharacter |   DecimalTypeCharacter |   SingleTypeCharacter |

Page 6: Resumen Gramatical de Visual Basic .NET

   DoubleTypeCharacter |   StringTypeCharacterIntegerTypeCharacter ::= %LongTypeCharacter ::= &DecimalTypeCharacter ::= @SingleTypeCharacter ::= !DoubleTypeCharacter ::= #StringTypeCharacter ::= $Palabras claveKeyword ::= < member of keyword table at Keywords >LiteralesLiteral ::= BooleanLiteral | NumericLiteral | StringLiteral | CharacterLiteral | DateLiteral | NothingNumericLiteral ::= IntegerLiteral | FloatingPointLiteralLiterales booleanosBooleanLiteral ::= True | FalseLiterales enterosIntegerLiteral ::= IntegralLiteralValue [ IntegralTypeCharacter ]IntegralLiteralValue ::= IntLiteral | HexLiteral | OctalLiteralIntegralTypeCharacter ::=   ShortCharacter |   IntegerCharacter |   LongCharacter |   IntegerTypeCharacter |   LongTypeCharacterShortCharacter ::= SIntegerCharacter ::= ILongCharacter ::= LIntLiteral ::= Digit+HexLiteral ::= & H HexDigit+OctalLiteral ::= & O OctalDigit+Digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9HexDigit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | FOctalDigit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7Literales de punto flotanteFloatingPointLiteral ::=   FloatingPointLiteralValue [ FloatingPointTypeCharacter ] |   IntLiteral FloatingPointTypeCharacterFloatingPointTypeCharacter ::=   SingleCharacter |   DoubleCharacter |   DecimalCharacter |   SingleTypeCharacter |   DoubleTypeCharacter |   DecimalTypeCharacterSingleCharacter ::= FDoubleCharacter ::= RDecimalCharacter ::= DFloatingPointLiteralValue ::=   IntLiteral . IntLiteral [ Exponent ] |   IntLiteral [ Exponent ] |   IntLiteral ExponentExponent ::= E [ Sign ] IntLiteralSign ::= + | -Literales de cadenaStringLiteral ::= " [ StringCharacter+ ] "

Page 7: Resumen Gramatical de Visual Basic .NET

StringCharacter ::= < Character except for " > | ""Literales de carácterCharacterLiteral ::= " StringCharacter " CLiterales de fechaDateLiteral ::= # [ Whitespace+ ] [ DateValue ] [ Whitespace+ ] [ TimeValue ] [ Whitespace+ ] #DateValue ::= MonthValue DateSeparator DayValue DateSeparator YearValueDateSeparator ::= / | -TimeValue ::= HourValue [ : MinuteValue ] [ : SecondValue ] [ Whitespace+ ] [ AMPM ]MonthValue ::= IntLiteralDayValue ::= IntLiteralYearValue ::= IntLiteralHourValue ::= IntLiteralMinuteValue ::= IntLiteralSecondValue ::= IntLiteralAMPM ::= AM | PMNothingNothing ::= NothingSeparadoresSeparator ::= ( | ) | ! | # | , | . | :Caracteres de operadorOperator ::= & | * | + | - | / | \ | ^ | < | = | >Preprocessing DirectivesDirectivas de compilación condicionalSource ::= [ ConditionalElement+ ]ConditionalElement ::= ConditionalIfGroup | ConditionalConstantDeclaration | LogicalLineConstantes condicionalesConditionalConstantDeclaration ::= # Const IdentifierOrKeyword = ConstantExpression LineTerminatorInstrucciones de compilación condicionalConditionalElseIfGroup ::=   # ElseIf ConstantExpression [ Then ] LineTerminator   [ ConditionalElement+ ]Directivas de origen externoSource ::= [ ExternalSourceElement+ ]ExternalSourceElement ::= ExternalSourceGroup | LogicalLineExternalSourceGroup ::=   # ExternalSource ( StringLiteral , IntLiteral ) LineTerminator   [ LogicalLine+ ]   # End ExternalSource LineTerminatorDirectivas de regiónStart ::= [ RegionElement+ ]RegionElement ::= RegionGroup | LogicalLineRegionGroup ::=   # Region [ NoDebug ] StringLiteral LineTerminator   [ LogicalLine+ ]   # End Region LineTerminatorConditionalElseGroup ::=    # Else LineTerminator   [ ConditionalElement+ ]Conceptos generalesAccesibilidadAccessModifier ::= Public | Protected | Friend | PrivateNombres de tipos y espacios de nombresQualifiedIdentifier ::=   Identifier |   QualifiedIdentifier . IdentifierOrKeyword

Page 8: Resumen Gramatical de Visual Basic .NET

Bloques de atributosAttributes ::= < AttributeList >AttributeList ::=   Attribute |   AttributeList , AttributeAttribute ::= [ AttributeModifier : ] TypeName [ ( [ AttributeArguments ] ) ]AttributeModifier ::= Assembly | MóduloArgumentos de atributosAttributeArguments ::=   AttributePositionalArgumentList |   AttributePositionalArgumentList , VariablePropertyInitializerList |   VariablePropertyInitializerListAttributePositionalArgumentList ::=   ConstantExpression |   AttributePositionalArgumentList , ConstantExpressionVariablePropertyInitializerList ::=   VariablePropertyInitializer   VariablePropertyInitializerList , VariablePropertyInitializerVariablePropertyInitializer ::= Identifier : = ConstantExpressionArchivos de código fuente y espacios de nombresSource ::=   [ OptionDirective+ ]   [ ImportsDirective+ ]   [ Attributes ]   [ NamespaceBody ]Opciones de compilaciónOptionDirective ::= OptionExplicitDirective | OptionStrictDirective | OptionCompareDirectiveInstrucción Option ExplicitOptionExplicitDirective ::= Option Explicit [ OnOff ] LineTerminatorOnOff ::= On | DesactivadoInstrucción Option StrictOptionStrictDirective ::= Option Strict [ OnOff ] LineTerminatorInstrucción Option CompareOptionCompareDirective ::= Option Compare CompareOption LineTerminatorCompareOption ::= Binary | TextInstrucción ImportsImportsDirective ::= Imports ImportsClauses LineTerminatorImportsClauses ::=   ImportsClause |   ImportsClauses , ImportsClauseImportsClause ::= ImportsAliasClause | RegularImportsClauseAlias de importaciónImportsAliasClause ::= Identifier = QualifiedIdentifierImportaciones regularesImportsNamespaceClause ::= QualifiedIdentifierDeclaraciones de espacios de nombresNamespaceDeclaration ::=   Namespace QualifiedIdentifier LineTerminator   [ NamespaceMemberDeclaration+ ]   End Namespace LineTerminatorMiembros de espacios de nombresNamespaceMemberDeclaration ::=   NamespaceDeclaration |   TypeDeclarationTypeDeclaration ::=

Page 9: Resumen Gramatical de Visual Basic .NET

   ModuleDeclaration |   NonModuleDeclarationNonModuleDeclaration ::=   EnumDeclaration |   StructureDeclaration |   InterfaceDeclaration |   ClassDeclaration |   DelegateDeclarationTiposTypeName ::= QualifiedIdentifier | Object | PrimitiveTypeName | ClassTypeName | ArrayTypeNameTipos primitivosPrimitiveTypeName ::= NumericTypeName | Boolean | Date | Tipo CharNumericTypeName ::= IntegralTypeName | FloatingPointTypeName | Tipo DecimalIntegralTypeName ::= Byte | Short | Integer | Tipo LongFloatingPointTypeName ::= Single | DoubleEnumeracionesEnumDeclaration ::=[ Attributes ]   [ EnumModifier+ ] Enum Identifier[ As IntegralTypeName ] LineTerminator   EnumMemberDeclaration+   End Enum LineTerminatorEnumModifier ::= AccessModifier | ShadowsMiembros de enumeracionesEnumMemberDeclaration ::=[ Attributes ] Identifier [ = ConstantExpression ] LineTerminatorEstructurasStructDeclaration ::=[ Attributes ] [ StructModifier+ ] Structure Identifier LineTerminator   [ TypeImplementsClause+ ]   [ StructMemberDeclaration+ ]   End Structure LineTerminatorStructureModifier ::= AccessModifier | ShadowsImplementaciones de interfaces de estructurasTypeImplementsClause ::= Implements Implements LineTerminatorImplements ::=   TypeName |   Implements , TypeNameMiembros de estructuraStructMemberDeclaration ::=   NonModuleDeclaration   VariableMemberDeclaration |   ConstantMemberDeclaration |   EventMemberDeclaration |   MethodMemberDeclaration |   PropertyMemberDeclaration |SharedConstructorDeclarationClasesClassTypeName ::= StringClassDeclaration ::=[ Attributes ] [ ClassModifier+ ] Class Identifier LineTerminator   [ ClassBase ]   [ TypeImplementsClause+ ]   [ ClassMemberDeclaration+ ]   End Class LineTerminatorModificadores de clase

Page 10: Resumen Gramatical de Visual Basic .NET

ClassModifier ::= AccessModifier | Shadows | MustInherit | NotInheritableEspecificación base de claseClassBase ::= Inherits TypeName LineTerminatorMiembros de claseClassMemberDeclaration ::=   NonModuleDeclaration |   EventMemberDeclaration |   VariableMemberDeclaration |   ConstantMemberDeclaration |   MethodMemberDeclaration |   PropertyMemberDeclaration |   ConstructorMemberDeclarationMódulos estándarModuleDeclaration ::=   [ Attributes ] [ AccessModifier+ ] Module Identifier LineTerminator   [ ModuleMemberDeclaration+ ]   End Module LineTerminatorMiembros de módulos estándarModuleMemberDeclaration ::=   NonModuleDeclaration |   VariableMemberDeclaration |   ConstantMemberDeclaration |   EventMemberDeclaration |   MethodMemberDeclaration |   PropertyMemberDeclaration |   SharedConstructorDeclarationInterfacesInterfaceDeclaration ::=   [ Attributes ] [ InterfaceModifier+ ] Interface Identifier LineTerminator   [ InterfaceBases+ ]   [ InterfaceMemberDeclaration+ ]   End Interface LineTerminatorInterfaceModifier ::= AccessModifier | ShadowsHerencia de interfazInterfaceBase ::= Inherits InterfaceBases LineTerminatorInterfaceBases ::=   TypeName   InterfaceBases , TypeNameMiembros de interfacesInterfaceMemberDeclaration ::=NonModuleDeclaration |   EventMemberDeclaration |   MethodMemberDeclaration |   PropertyMemberDeclarationMatricesArrayTypeName ::= TypeName ArrayTypeModifierArrayTypeModifier ::= ( [ RankList ] )RankList ::=   , |   RankList ,ArrayNameModifier ::=   ArrayTypeModifier | ArrayInitializationModifierDelegadosDelegateTypeDeclaration ::=[ DelegateModifier+ ] Delegate MethodDeclarationDelegateModifier ::= AccessModifier | Shadows

Page 11: Resumen Gramatical de Visual Basic .NET

Miembros de tipoMétodosMethodMemberDeclaration ::= MethodDeclaration | ExternalMethodDeclarationDeclaraciones de métodos regularesMethodDeclaration ::= SubDeclaration | FunctionDeclarationSubDeclaration ::=   [ Attributes ] [ ProcedureModifier+ ] Sub Identifier [ ( [ FormalParameterList ] ) ][ HandlesOrImplements ] LineTerminator   [ Block ]   [ End Sub LineTerminator ]FunctionDeclaration ::=   [ Attributes ] [ ProcedureModifier+ ] Function Identifier[ ( [ FormalParameterList ] ) ] [ As [ Attributes ] TypeName ][ HandlesOrImplements ] LineTerminator   [ Block ]   [ End Function LineTerminator ]ProcedureModifier ::=   AccessModifier |   Shadows |   Shared |   Overridable |   NotOverridable |   MustOverride |   Overrides |   OverloadsHandlesOrImplements ::= HandlesClause | MethodImplementsClauseDeclaraciones de métodos regularesExternalMethodDeclaration ::= ExternalSubDeclaration | ExternalFunctionDeclarationExternalSubDeclaration ::=   [ Attributes ] [ ExternalMethodModifier+ ] Declare [ CharsetModifier ] Sub IdentifierLibraryClause [ AliasClause ] [ ( [ FormalParameterList ] ) ] LineTerminatorExternalFunctionDeclaration ::=   [ Attributes ] [ ExternalMethodModifier+ ] Declare [ CharsetModifier ] Function Identifier LibraryClause [ AliasClause ] [ ( [ FormalParameterList ] ) ][ As [ Attributes ] TypeName ] LineTerminatorExternalMethodModifier ::= AccessModifier | Shadows | OverloadsCharsetModifier ::= Ansi | Unicode | AutoLibraryClause ::= Lib StringLiteralAliasClause ::= Alias StringLiteralParámetros de métodosFormalParameterList ::=   FormalParameter |   FormalParameterList , FormalParameterFormalParameter ::=   [ Attributes ] ParameterModifier+ Identifier [ As TypeName ][ = ConstantExpression ]ParameterModifier ::= ByRef | ByVal | Optional | ParamArrayImplementaciones de métodos de interfazImplementsClause ::= [ Implements ImplementsList ]ImplementsList ::=   InterfaceMemberSpecifier |   ImplementsList , InterfaceMemberSpecifierInterfaceMemberSpecifier ::= TypeName . IdentificadorControl de eventosHandlesClause ::= [ Handles EventHandlesList ]

Page 12: Resumen Gramatical de Visual Basic .NET

EventHandlesList ::=   EventMemberSpecifier |   EventHandlesList , EventMemberSpecifierEventMemberSpecifier ::=   Identifier . [ Identifier . ] Identifier   MyBase . [ Identifier . ] IdentifierConstructoresConstructorMemberDeclaration ::= InstanceConstructorDeclaration | SharedConstructorDeclarationConstructores de instanciaInstanceConstructorDeclaration ::=   [ Attributes ] [ InstanceConstructorModifier+ ] Sub New[ ( [ FormalParameterList ] ) ] LineTerminator   [ Block ]   End Sub LineTerminatorInstanceConstructorModifier ::= AccessModifier | OverloadsMiembros compartidosSharedConstructorDeclaration ::=   [ Attributes ] Shared Sub New [ ( ) ] LineTerminator   [ Block ]   End Sub LineTerminatorEventosEventMemberDeclaration ::=   [ Attributes ] [ EventModifiers+ ] Event Identifier ParametersOrType[ ImplementsClause ] LineTerminatorParametersOrType ::=   [ ( [ FormalParameterList ] ) ] |   As TypeNameConstantesConstantMemberDeclaration ::=   [ Attributes ] [ ConstantModifier+ ] Const Identifier [ As TypeName ] =ConstantExpression LineTerminatorConstantModifier ::= AccessModifiers | ShadowsVariablesVariableMemberDeclaration ::=[ Attributes ] [ VariableModifier+ ] [ Dim ] VariableDeclarators LineTerminatorVariableModifier ::= AccessModifiers | Shadows | Shared | ReadOnly | WithEventsVariableDeclarators ::=   VariableDeclarator |   VariableDeclarators , VariableDeclaratorVariableDeclarator ::=   VariableIdentifiers [ As TypeName ] |VariableIdentifier[ As [ New ] TypeName [ ( ArgumentList ) ] ] [ = VariableInitializer ]VariableIdentifiers ::=   VariableIdentifier |   VariableIdentifiers , VariableIdentifierVariableIdentifier ::= Identifier [ ArrayNameModifier ]Inicializadores de variablesVariableInitializer ::= RegularInitializer | ArrayElementInitializerInicializadores regularesRegularInitializer ::= ExpressionInicializadores de elementos de matrizArrayElementInitializer ::= { [ VariableInitializerList ] }VariableInitializerList ::=   VariableInitializer |

Page 13: Resumen Gramatical de Visual Basic .NET

   VariableInitializerList , VariableInitializerVariableInitializer ::= Expression | ArrayElementInitializerInicializadores de tamaño de matrizArrayInitializationModifier ::= ( InitializationRankList )InitializationRankList ::=   Expression |   InitializationRankList , ExpressionPropiedadesPropertyMemberDeclaration ::=   [ Attributes ] PropertyModifier+ Property Identifier [ ( [ FormalParameterList ] ) ][ As TypeName ] [ MethodImplementsClause ] LineTerminator   PropertyAccessorDeclaration+   [ End Property LineTerminator ]PropertyModifier ::= ProcedureModifier | Default | ReadOnly | WriteOnlyPropertyAccessorDeclaration ::= PropertyGetDeclaration | PropertySetDeclarationDeclaraciones de captadoresPropertyGetDeclaration ::=   [ Attributes ] Get LineTerminator   [ Block ]   End GetDeclaraciones de establecedoresPropertySetDeclaration ::=   [ Attributes ] Set LineTerminator   [ Block ]   End SetInstruccionesBloquesBlock ::= [ LabeledLine+ ]LabeledLine ::= [ LabelName : ] [ Statements ] LineTerminatorLabelName ::= Identifier | IntLiteralStatements ::=   [ Statement ] |   Statements [ Statement ]Instrucciones de declaración de variables localesLocalDeclarationStatement ::= LocalModifier LocalDeclarator StatementTerminatorLocalModifier ::= Dim | ConstLocalDeclarator ::=   LocalIdentifiers [ As TypeName ]Identifier [ ArrayNameModifier ][ As [ New ] TypeName [ ( [ ArgumentList ] ) ] ] [ = VariableInitializer ]LocalIdentifiers ::=   Identifier [ ArrayNameModifier ] |   LocalIdentifiers , Identifier [ ArrayNameModifier ]LocalVariableName ::= IdentifierInstrucción WithWithStatement ::=   With Expression StatementTerminator   [ Block ]   End With StatementTerminatorInstrucción SyncLockSyncLockStatement ::=   SyncLock Expression StatementTerminator   [ Block ]   End SyncLock StatementTerminatorInstrucciones de eventos

Page 14: Resumen Gramatical de Visual Basic .NET

EventStatement ::=   RaiseEventStatement |   AddHandlerStatement |   RemoveHandlerStatementInstrucción RaiseEventRaiseEventStatement ::= RaiseEvent EventMemberName[ ( [ ArgumentList ] ) ] StatementTerminatorInstrucciones AddHandler y RemoveHandlerAddHandlerStatement ::= AddHandler HandlerArguments StatementTerminatorRemoveHandlerStatement ::= RemoveHandler HandlerArguments StatementTerminatorHandlerArguments ::= EventExpression , ArgumentExpressionInstrucciones de asignaciónAssignmentStatement ::=   SimpleAssignmentStatement |   DelegateAssignmentStatement |   CompoundAssignmentStatement |   MidAssignmentStatementInstrucciones de asignaciones simplesRegularAssignmentStatement ::= VariableExpression = Expression StatementTerminatorVariableExpression ::= ExpressionInstrucciones de asignaciones de delegadoDelegateAssignmentStatement ::=VariableExpression = AddressOf InvocationTargetExpression StatementTerminatorInstrucciones de asignaciones compuestasCompoundAssignmentStatement ::= VariableExpression CompoundBinaryOperator =Expression StatementTerminatorCompoundBinaryOperator ::= ^ | * | / | \ | + | - | &Instrucción de asignación MidMidAssignmentStatement ::= Mid [ $ ] ( VariableExpression , Expression   [ , Expression ] ) =Expression StatementTerminatorInstrucción de invocaciónInvocationStatement ::= [ Call ] InvocationExpression StatementTerminatorInstrucciones condicionalesConditionalStatement ::= IfStatement | SelectStatementIf...Then...Else (Instrucciones)IfStatement ::= BlockIfStatement | LineIfThenStatementBlockIfStatement ::=   If BooleanExpression [ Then ] StatementTerminator   [ Block ]   [ ElseIfStatement+ ]   [ ElseStatement ]   End If StatementTerminatorElseIfStatement ::=   ElseIf BooleanExpression [ Then ] StatementTerminator   [ Block ]ElseStatement ::=   Else StatementTerminator   [ Block ]LineIfThenStatement ::= If BooleanExpression Then [Statements ][ Else Statements ] StatementTerminatorBooleanExpression ::= ExpressionInstrucciones Select...CaseSelectStatement ::=   Select [ Case ] Expression StatementTerminator   [ CaseStatement+ ]

Page 15: Resumen Gramatical de Visual Basic .NET

   [ CaseElseStatement ]   End Select StatementTerminatorCaseStatement ::=   Case CaseClauses StatementTerminator   [ Block ]CaseClauses ::=   CaseClause |   CaseClauses , CaseClauseCaseClause ::=   [ Is ] ComparisonOperator Expression |   Expression [ To Expression ]ComparisonOperator ::= = | < > | < | > | = > | = <CaseElseStatement ::=   Case Else StatementTerminator   [ Block ]Instrucciones de bucleLoopStatement ::=   WhileStatement |   DoLoopStatement |   ForStatement |   ForEachStatementInstrucciones While...End While y Do...LoopWhileStatement ::=   While BooleanExpression StatementTerminator   [ Block ]   End While StatementTerminatorDoLoopStatement ::=   Do [ WhileOrUntil BooleanExpression ] StatementTerminator   [ Block ]   Loop [ WhileOrUntil BooleanExpression ] StatementTerminatorWhileOrUntil ::= While | UntilFor...Next (Instrucciones)ForStatement ::=   For LoopControlVariable = Expression To Expression [ Step Expression ] StatementTerminator    [ Block ]   Next [ NextExpressionList ] StatementTerminatorLoopControlVariable ::=   Identifier As TypeName |   ExpressionNextExpressionList ::=   VariableExpression |   NextExpressionList , VariableExpressionFor Each...Next (Instrucciones)ForEachStatement ::=   For Each LoopControlVariable In Expression StatementTerminator   [ Block ]   Next [ VariableExpression ] StatementTerminatorInstrucciones de control de excepcionesExceptionHandlingStatement ::=   StructuredExceptionStatement |   UnstructuredExceptionStatementInstrucciones de control estructurado de excepcionesStructuredExceptionStatement ::=   ThrowStatement |   TryStatement

Page 16: Resumen Gramatical de Visual Basic .NET

ThrowStatement ::= Throw [ Expression ] StatementTerminatorTryStatement ::=   Try StatementTerminator   [ Block ]   [ CatchStatement+ ]   [ FinallyStatement ]   End Try StatementTerminatorBloques FinallyFinallyStatement ::=   Finally StatementTerminator   [ Block ]Bloques CatchCatchStatement ::=   Catch [ Identifier As TypeName ] [ When BooleanExpression ] StatementTerminator   [ Block ]Instrucciones de control no estructurado de excepcionesUnstructuredExceptionStatement ::=   ErrorStatement |   OnErrorStatement |   ResumeStatementInstrucción ErrorErrorStatement ::= Error Expression StatementTerminatorInstrucción On ErrorOnErrorStatement ::= On Error ErrorClause StatementTerminatorErrorClause ::=   Resume Next |   GoTo -1 |   GoTo 0 |   GotoStatementInstrucción ResumeResumeStatement ::= Resume [ ResumeClause ] StatementTerminatorResumeClause ::= Next | LabelNameInstrucciones de flujo de controlControlFlowStatement ::=   GotoStatement |   ExitStatement |   StopStatement |   EndStatement |   ReturnStatementGotoStatement ::= GoTo LabelName StatementTerminatorExitStatement ::= Exit ExitKind StatementTerminatorExitKind ::= Do | For | While | Select | Sub | Function | Property | PruebeStopStatement ::= Stop StatementTerminatorEndStatement ::= End StatementTerminatorReturnStatement ::= Return [ Expression ]Instrucciones de control de matricesArrayHandlingStatement ::=   RedimStatement |   EraseStatementInstrucción ReDimRedimStatement ::= ReDim [ Preserve ] RedimClauses+ StatementTerminatorRedimClauses ::=   RedimClauses |   RedimClause , RedimClausesRedimClause ::= VariableExpression ArrayInitializationModifier

Page 17: Resumen Gramatical de Visual Basic .NET

Instrucción EraseEraseStatement ::= Erase VariableExpressions StatementTerminatorVariableExpressions ::=   VariableExpression |   VariableExpressions , VariableExpressionExpresionesExpression ::=   SimpleExpression |   InvocationExpression |   MemberAccessExpression |   IndexExpression |   NewExpression |   CastExpression |   TypeOfExpression |   OperatorExpressionExpresiones constantesConstantExpression ::= ExpressionExpresiones variablesVariableExpression ::= ExpressionExpresiones de eventosEventExpression ::=   Expression . IdentifierOrKeyword |   [ MeExpression . ] IdentifierOrKeyword |   EventMemberNameExpresiones simplesSimpleExpression ::=   LiteralExpression |   ParenthesizedExpression |   MeExpression |   MetaTypeExpression |   LocalVariableExpression |   TypeOfIsOperatorExpression |   IsOperatorExpressionExpresiones literalesLiteralExpression ::= LiteralExpresiones entre paréntesisParenthesizedExpression ::= ( Expression )Expresión MeMeExpression ::= MeExpresiones GetTypeMetaTypeExpression ::= GetType ( TypeName )Expresiones de variable localLocalVariableExpression ::= LocalVariableNameExpresiones TypeOf...IsTypeOfIsOperatorExpression ::= TypeOf Expression Is TypeNameExpresiones IsIsOperatorExpression ::= Expression Is ExpressionExpresiones de invocaciónInvocationExpression ::= InvocationTargetExpression [ ( [ ArgumentList ] ) ]InvocationTargetExpression ::=   DelegateExpression |   [ [ Expression ] . ] IdentifierOrKeyword |   MyClass . IdentifierOrKeyword |   MyBase . IdentifierOrKeyword |   MethodMemberName

Page 18: Resumen Gramatical de Visual Basic .NET

DelegateExpression ::= ExpressionListas de argumentosArgumentList ::=   PositionalArgumentList , NamedArgumentList |   PositionalArgumentList |   NamedArgumentListPositionalArgumentList ::=   ArgumentExpression |   PositionalArgumentList , [ ArgumentExpression ]NamedArgumentList ::=   Identifier : = ArgumentExpression |   NamedArgumentList , Identifier : = ArgumentExpressionArgumentExpression ::= Expression | DelegateArgumentExpressionExpresiones de argumentos de delegadoDelegateArgumentExpression ::= AddressOf InvocationTargetExpressionExpresiones de acceso a miembrosMemberAccessExpression ::=   [ [ Expression ] . ] IdentifierOrKeyword |   VariableMemberName |   PropertyMemberName |   ConstantMemberName |   EnumMemberName |   DictionaryAccessExpressionAcceso a miembros de tipo diccionarioDictionaryAccessExpression ::= [ Expression ] ! IdentifierOrKeywordExpresiones de índiceIndexExpression ::= Expression ( ArgumentList )Expresiones NewNewExpression ::=   ObjectCreationExpression |   ArrayCreationExpression |   DelegateCreationExpressionExpresiones de creación de objetosObjectCreationExpression ::= New TypeName [ ( [ ArgumentList ] ) ]Expresiones de creación de matricesArrayCreationExpression ::=   New TypeName ( ArgumentList ) ArrayElementInitializer |   New ArrayTypeName ArrayElementInitializerExpresiones de creación de delegadosDelegateCreationExpression ::= New TypeName ( InvocationTargetExpression )Expresiones de conversiónCastExpression ::=   CType ( Expression , TypeName ) |   CastTarget ( Expression )CastTarget ::=   CBool | CByte | CChar | CDate | CDec | CDbl |   CInt | CLng | CObj | CShort | CSng | CStrOperadoresOperatorExpression ::= UnaryOperatorExpression | BinaryOperatorExpressionBinaryOperatorExpression ::=   ArithmeticOperatorExpression |   RelationalOperatorExpression |   LikeOperatorExpression |   ConcatenationOperatorExpression |   ShortCircuitLogicalOperatorExpression |

Page 19: Resumen Gramatical de Visual Basic .NET

   LogicalOperatorExpression |   ShiftOperatorExpressionOperadores unariosUnaryOperatorExpression ::=   UnaryPlusExpression |   UnaryMinusExpression |   UnaryLogicalNotExpressionOperador unario másUnaryPlusExpression ::= + ExpressionOperador unario MenosUnaryMinusExpression ::= - ExpressionOperador de negación lógicaUnaryLogicalNotExpression ::= Not ExpressionOperadores aritméticosArithmeticOperatorExpression ::=   AdditionOperatorExpression |   SubtractionOperatorExpression |   MultiplicationOperatorExpression |   DivisionOperatorExpression |   ModuloOperatorExpression |   ExponentOperatorExpressionOperador de sumaAdditionOperatorExpression ::= Expression + ExpressionOperador de restaSubtractionOperatorExpression ::= Expression - ExpressionOperador de multiplicaciónMultiplicationOperatorExpression ::= Expression * ExpressionOperador de divisiónDivisionOperatorExpression ::=   RegularDivisionOperatorExpression |   IntegerDivisionOperatorExpressionRegularDivisionOperatorExpression ::= Expression / ExpressionIntegerDivisionOperatorExpression ::= Expression \ ExpressionOperador ModModOperatorExpression ::= Expression Mod ExpressionOperador de exponenciaciónExponentOperatorExpression ::= Expression ^ ExpressionOperadores relacionalesRelationalOperatorExpression ::=   Expression = Expression |   Expression < > Expression |   Expression < Expression |   Expression > Expression |   Expression < = Expression |   Expression > = ExpressionOperador LikeLikeOperatorExpression ::= Expression Like ExpressionOperador de concatenaciónConcatenationOperatorExpression ::= Expression & ExpressionOperadores lógicosLogicalOperatorExpression ::=   Expression And Expression |   Expression Or Expression |   Expression Xor Expression |   Expression AndAlso Expression |

Page 20: Resumen Gramatical de Visual Basic .NET

   Expression OrElse ExpressionOperadores de desplazamientoShiftOperatorExpression ::=   Expression << Expression |   Expression >> Expression