Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Grammar - Lexical and Syntactic grammar

C sharp



+ Font mai mare | - Font mai mic



Grammar

This appendix contains summaries of the lexical and syntactic grammars found in the main document, and of the grammar extensions for unsafe code. Grammar productions appear here in the same order that they appear in the main document.

Lexical grammar



input:
input-sectionopt

input-section:
input-section-part
input-section input-section-part

input-section-part:
input-elementsopt new-line
pp-directive

input-elements:
input-element
input-elements input-element

input-element:
whitespace
comment
token

Line terminators

new-line:
Carriage return character (U+000D)
Line feed character (U+000A)
Carriage return character (U+000D) followed by line feed character (U+000A)
Line separator character (U+2028)
Paragraph separator character (U+2029)

White space

whitespace:
Any character with Unicode class Zs
Horizontal tab character (
U+0009)
Vertical tab character (U+000B)
Form feed character (U+000C)

Comments

comment:
single-line-comment
delimited-comment

single-line-comment:
// input-charactersopt

input-characters:
input-character
input-characters input-character

input-character:
Any Unicode character except a new-line-character

new-line-character:
Carriage return character (U+000D)
Line feed character (
U+000A)
Line separator character (
U+2028)
Paragraph separator character (
U+2029)

delimited-comment:
/* delimited-comment-charactersopt */

delimited-comment-characters:
delimited-comment-character
delimited-comment-characters delimited-comment-character

delimited-comment-character:
not-asterisk
* not-slash

not-asterisk:
Any Unicode character except *

not-slash:
Any Unicode character except /

Tokens

token:
identifier
keyword
integer-literal
real-literal
character-literal
string-literal
operator-or-punctuator

Unicode character escape sequences

unicode-escape-sequence:
u hex-digit hex-digit hex-digit hex-digit
U hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit

Identifiers

identifier:
available-identifier
@ identifier-or-keyword

available-identifier:
An identifier-or-keyword that is not a keyword

identifier-or-keyword:
identifier-start-character identifier-part-charactersopt

identifier-start-character:
letter-character
_ (the underscore character)

identifier-part-characters:
identifier-part-character
identifier-part-characters identifier-part-character

identifier-part-character:
letter-character
decimal-digit-character
connecting-character
combining-character
formatting-character

letter-character:
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
A unicode-escape-sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl

combining-character:
A Unicode character of classes Mn or Mc
A unicode-escape-sequence representing a character of classes Mn or Mc

decimal-digit-character:
A Unicode character of the class Nd
A unicode-escape-sequence representing a character of the class Nd

connecting-character:
A Unicode character of the class Pc
A unicode-escape-sequence representing a character of the class Pc

formatting-character:
A Unicode character of the class Cf
A unicode-escape-sequence representing a character of the class Cf

Keywords

keyword: one of
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while

Literals

literal:
boolean-literal
integer-literal
real-literal
character-literal
string-literal
null-literal

boolean-literal:
true
false

integer-literal:
decimal-integer-literal
hexadecimal-integer-literal

decimal-integer-literal:
decimal-digits integer-type-suffixopt

decimal-digits:
decimal-digit
decimal-digits decimal-digit

decimal-digit: one of
0 1 2 3 4 5 6 7 8 9

integer-type-suffix: one of
U u L l UL Ul uL ul LU Lu lU lu

hexadecimal-integer-literal:
0x hex-digits integer-type-suffixopt
0X hex-digits integer-type-suffixopt

hex-digits:
hex-digit
hex-digits hex-digit

hex-digit: one of
0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f

real-literal:
decimal-digits
. decimal-digits exponent-partopt real-type-suffixopt
. decimal-digits exponent-partopt real-type-suffixopt
decimal-digits exponent-part real-type-suffixopt
decimal-digits real-type-suffix

exponent-part:
e signopt decimal-digits
E signopt decimal-digits

sign: one of
+ -

real-type-suffix: one of
F f D d M m

character-literal:
' character '

character:
single-character
simple-escape-sequence
hexadecimal-escape-sequence
unicode-escape-sequence

single-character:
Any character except ' (U+0027), (U+005C), and new-line-character

simple-escape-sequence: one of
' ' 0 a b f n r t v

hexadecimal-escape-sequence:
x hex-digit hex-digitopt hex-digitopt hex-digitopt

string-literal:
regular-string-literal
verbatim-string-literal

regular-string-literal:
' regular-string-literal-charactersopt '

regular-string-literal-characters:
regular-string-literal-character
regular-string-literal-characters regular-string-literal-character

regular-string-literal-character:
single-regular-string-literal-character
simple-escape-sequence
hexadecimal-escape-sequence
unicode-escape-sequence

single-regular-string-literal-character:
Any character except ' (U+0022), (U+005C), and new-line-character

verbatim-string-literal:
@' verbatim -string-literal-charactersopt '

verbatim-string-literal-characters:
verbatim-string-literal-character
verbatim-string-literal-characters verbatim-string-literal-character

verbatim-string-literal-character:
single-verbatim-string-literal-character
quote-escape-sequence

single-verbatim-string-literal-character:
any character except '

quote-escape-sequence:
''

null-literal:
null

Operators and punctuators

operator-or-punctuator: one of
[ ] ( ) . , : ;
+ - * / % & | ^ ! ~
= < > ? ++ -- && || << >>
== != <= >= += -= *= /= %= &=
|= ^= <<= >>= ->

Pre-processing directives

pp-directive:
pp-declaration
pp-conditional
pp-line
pp-diagnostic
pp-region

pp-new-line:
whitespaceopt single-line-commentopt new-line

conditional-symbol:
Any identifier-or-keyword except true or false

pp-expression:
whitespaceopt pp-or-expression whitespaceopt

pp-or-expression:
pp-and-expression
pp-or-expression whitespaceopt
|| whitespaceopt pp-and-expression

pp-and-expression:
pp-equality-expression
pp-and-expression whitespaceopt
&& whitespaceopt pp-equality-expression

pp-equality-expression:
pp-unary-expression
pp-equality-expression whitespaceopt
== whitespaceopt pp-unary-expression
pp-equality-expression whitespaceopt
!= whitespaceopt pp-unary-expression

pp-unary-expression:
pp-primary-expression
! whitespaceopt pp-unary-expression

pp-primary-expression:
true
false
conditional-symbol
( pp-expression )

pp-declaration:
whitespaceopt
# whitespaceopt define whitespace conditional-symbol pp-new-line
whitespaceopt
# whitespaceopt undef whitespace conditional-symbol pp-new-line

pp-conditional:
pp-if-section pp-elif-sectionsopt pp-else-sectionopt pp-endif

pp-if-section:
whitespaceopt
# whitespaceopt if pp-expression pp-new-line conditional-sectionopt

pp-elif-sections:
pp-elif-section
pp-elif-sections pp-elif-section

pp-elif-section:
whitespaceopt
# whitespaceopt elif pp-expression pp-new-line conditional-sectionopt

else-section:
whitespaceopt
# whitespaceopt else pp-new-line conditional-sectionopt

endif-line:
whitespaceopt
# whitespaceopt endif pp-new-line

conditional-section:
input-section
skipped-section

skipped-section:
skipped-section-part
skipped-section skipped-section-part

skipped-section-part:
skipped-charactersopt new-line
pp-directive

skipped-characters:
whitespaceopt not-number-sign input-charactersopt

not-number-sign:
Any input-character except #

pp-line:
whitespaceopt
# whitespaceopt line whitespaceopt line-indicator pp-new-line
whitespaceopt
# whitespaceopt line defaultline-indicator:
integer-literal whitepaceopt file-nameopt

file-name:
' file-name-characters '

file-name-characters:
file-name-character
file-name-characters file-name-character

file-name-character:
Any input-character except '

pp-diagnostic:
whitespaceopt
# whitespaceopt error whitespaceopt pp-message
whitespaceopt
# whitespaceopt warning whitespaceopt pp-message

pp-message:
input-charactersopt new-line

pp-region:
pp-start-region conditional-sectionopt pp-end-region

pp-start-region:
whitespaceopt
# whitespaceopt region whitespaceopt pp-message

pp-end-region:
whitespaceopt
# whitespaceopt endregion whitespaceopt pp-message

Syntactic grammar

Basic concepts

namespace-name:
namespace-or-type-name

type-name:
namespace-or-type-name

namespace-or-type-name:
identifier
namespace-or-type-name
. identifier

Types

type:
value-type
reference-type

value-type:
struct-type
enum-type

struct-type:
type-name
simple-type

simple-type:
numeric-type
bool

numeric-type:
integral-type
floating-point-type
decimal

integral-type:
sbyte
byte
short
ushort
int
uint
long
ulong
char

floating-point-type:
float
double

enum-type:
type-name

reference-type:
class-type
interface-type
array-type
delegate-type

class-type:
type-name
object
string

interface-type:
type-name

array-type:
non-array-type rank-specifiers

non-array-type:
type

rank-specifiers:
rank-specifier
rank-specifiers rank-specifier

rank-specifier:
[ dim-separatorsopt ]

dim-separators:
,
dim-separators
,

delegate-type:
type-name

Variables

variable-reference:
expression

Expressions

argument-list:
argument
argument-list
, argument

argument:
expression
ref variable-reference
out variable-reference

primary-expression:
array-creation-expression
primary-expression-no-array-creation

primary-expression-no-array-creation:
literal
simple-name
parenthesized-expression
member-access
invocation-expression
element-access
this-access
base-access
post-increment-expression
post-decrement-expression
new-expression
typeof-expression
sizeof-expression
checked-expression
unchecked-expression

simple-name:
identifier

parenthesized-expression:
( expression )

member-access:
primary-expression
. identifier
predefined-type
. identifier

predefined-type: one of
bool byte char decimal double float int long
object sbyte short string uint ulong ushort

invocation-expression:
primary-expression
( argument-listopt )

element-access:
primary-expression-no-array-creation
[ expression-list ]

expression-list:
expression
expression-list
, expression

this-access:
this

base-access:
base . identifier
base [ expression-list ]

post-increment-expression:
primary-expression
++

post-decrement-expression:
primary-expression
--

new-expression:
object-creation-expression
array-creation-expression
delegate-creation-expression

object-creation-expression:
new type ( argument-listopt )

array-creation-expression:
new non-array-type [ expression-list ] rank-specifiersopt array-initializeropt
new array-type array-initializer

delegate-creation-expression:
new delegate-type ( expression )

typeof-expression:
typeof ( type )
typeof ( void )

checked-expression:
checked ( expression )

unchecked-expression:
unchecked ( expression )

unary-expression:
primary-expression
+ unary-expression
- unary-expression
! unary-expression
~ unary-expression
* unary-expression
pre-increment-expression
pre-decrement-expression
cast-expression

pre-increment-expression:
++ unary-expression

pre-decrement-expression:
-- unary-expression

cast-expression:
( type ) unary-expression

multiplicative-expression:
unary-expression
multiplicative-expression
* unary-expression
multiplicative-expression
/ unary-expression
multiplicative-expression
% unary-expression

additive-expression:
multiplicative-expression
additive-expression
+ multiplicative-expression
additive-expression
- multiplicative-expression

shift-expression:
additive-expression
shift-expression
<< additive-expression
shift-expression
>> additive-expression

relational-expression:
shift-expression
relational-expression
< shift-expression
relational-expression
> shift-expression
relational-expression
<= shift-expression
relational-expression
>= shift-expression
relational-expression
is type
relational-expression
as type

equality-expression:
relational-expression
equality-expression
== relational-expression
equality-expression
!= relational-expression

and-expression:
equality-expression
and-expression
& equality-expression

exclusive-or-expression:
and-expression
exclusive-or-expression
^ and-expression

inclusive-or-expression:
exclusive-or-expression
inclusive-or-expression
| exclusive-or-expression

conditional-and-expression:
inclusive-or-expression
conditional-and-expression
&& inclusive-or-expression

conditional-or-expression:
conditional-and-expression
conditional-or-expression
|| conditional-and-expression

conditional-expression:
conditional-or-expression
conditional-or-expression
? expression : expression

assignment:
unary-expression assignment-operator expression

assignment-operator: one of
= += -= *= /= %= &= |= ^= <<= >>=

expression:
conditional-expression
assignment

constant-expression:
expression

boolean-expression:
expression

Statements

statement:
labeled-statement
declaration-statement
embedded-statement

embedded-statement:
block
empty-statement
expression-statement
selection-statement
iteration-statement
jump-statement
try-statement
checked-statement
unchecked-statement
lock-statement
using-statement

block:

statement-list:
statement
statement-list statement

empty-statement:
;

labeled-statement:
identifier
: statement

declaration-statement:
local-variable-declaration
;
local-constant-declaration
;

local-variable-declaration:
type variable-declarators

variable-declarators:
variable-declarator
variable-declarators
, variable-declarator

variable-declarator:
identifier
identifier = variable-initializer

variable-initializer:
expression
array-initializer

local-constant-declaration:
const type constant-declarators

constant-declarators:
constant-declarator
constant-declarators
, constant-declarator

constant-declarator:
identifier = constant-expression

expression-statement:
statement-expression
;

statement-expression:
invocation-expression
object-creation-expression
assignment
post-increment-expression
post-decrement-expression
pre-increment-expression
pre-decrement-expression

selection-statement:
if-statement
switch-statement

if-statement:
if ( boolean-expression ) embedded-statement
if ( boolean-expression ) embedded-statement else embedded-statement

boolean-expression:
expression

switch-statement:
switch ( expression ) switch-block

switch-block:

switch-sections:
switch-section
switch-sections switch-section

switch-section:
switch-labels statement-list

switch-labels:
switch-label
switch-labels switch-label

switch-label:
case constant-expression :
default :

iteration-statement:
while-statement
do-statement
for-statement
foreach-statement

while-statement:
while ( boolean-expression ) embedded-statement

do-statement:
do embedded-statement while ( boolean-expression ) ;

for-statement:
for ( for-initializeropt ; for-conditionopt ; for-iteratoropt ) embedded-statement

for-initializer:
local-variable-declaration
statement-expression-list

for-condition:
boolean-expression

for-iterator:
statement-expression-list

statement-expression-list:
statement-expression
statement-expression-list
, statement-expression

foreach-statement:
foreach ( type identifier in expression ) embedded-statement

jump-statement:
break-statement
continue-statement
goto-statement
return-statement
throw-statement

break-statement:
break ;

continue-statement:
continue ;

goto-statement:
goto identifier ;
goto
case constant-expression ;
goto default ;

return-statement:
return expressionopt ;

throw-statement:
throw expressionopt ;

try-statement:
try block catch-clauses
try block finally-clause
try block catch-clauses finally-clause

catch-clauses:
specific-catch-clauses general-catch-clauseopt
specific-catch-clausesopt general-catch-clause

specific-catch-clauses:
specific-catch-clause
specific-catch-clauses specific-catch-clause

specific-catch-clause:
catch ( class-type identifieropt ) block

general-catch-clause:
catch block

finally-clause:
finally block

checked-statement:
checked block

unchecked-statement:
unchecked block

lock-statement:
lock ( expression ) embedded-statement

using-statement:
using ( resource-acquisition ) embedded-statement

resource-acquisition:
local-variable-declaration
expression

compilation-unit:
using-directivesopt attributesopt namespace-member-declarationsopt

namespace-declaration:
namespace qualified-identifier namespace-body ;opt

qualified-identifier:
identifier
qualified-identifier
. identifier

namespace-body:

using-directives:
using-directive
using-directives using-directive

using-directive:
using-alias-directive
using-namespace-directive

using-alias-directive:
using identifier = namespace-or-type-name ;

using-namespace-directive:
using namespace-name ;

namespace-member-declarations:
namespace-member-declaration
namespace-member-declarations namespace-member-declaration

namespace-member-declaration:
namespace-declaration
type-declaration

type-declaration:
class-declaration
struct-declaration
interface-declaration
enum-declaration
delegate-declaration

Classes

class-declaration:
attributesopt class-modifiersopt
class identifier class-baseopt class-body ;opt

class-modifiers:
class-modifier
class-modifiers class-modifier

class-modifier:
new
public
protected
internal

private
abstract
sealed

class-base:
: class-type
: interface-type-list
: class-type , interface-type-list

interface-type-list:
interface-type
interface-type-list
, interface-type

class-body:

class-member-declarations:
class-member-declaration
class-member-declarations class-member-declaration

class-member-declaration:
constant-declaration
field-declaration
method-declaration
property-declaration
event-declaration
indexer-declaration
operator-declaration
constructor-declaration
destructor-declaration
static-constructor-declaration
type-declaration

constant-declaration:
attributesopt constant-modifiersopt
const type constant-declarators ;

constant-modifiers:
constant-modifier
constant-modifiers constant-modifier

constant-modifier:
new
public
protected
internal

private

constant-declarators:
constant-declarator
constant-declarators
, constant-declarator

constant-declarator:
identifier = constant-expression

field-declaration:
attributesopt field-modifiersopt type variable-declarators
;

field-modifiers:
field-modifier
field-modifiers field-modifier

field-modifier:
new
public
protected
internal

private
static
readonly

variable-declarators:
variable-declarator
variable-declarators
, variable-declarator

variable-declarator:
identifier
identifier = variable-initializer

variable-initializer:
expression
array-initializer

method-declaration:
method-header method-body

method-header:
attributesopt method-modifiersopt return-type member-name
( formal-parameter-listopt )

method-modifiers:
method-modifier
method-modifiers method-modifier

method-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern

return-type:
type
void

member-name:
identifier
interface-type
. identifier

method-body:
block
;

formal-parameter-list:
fixed-parameters
fixed-parameters
, parameter-array
parameter-array

fixed-parameters:
fixed-parameter
fixed-parameters
, fixed-parameter

fixed-parameter:
attributesopt parameter-modifieropt type identifier

parameter-modifier:
ref
out

parameter-array:
attributesopt
params array-type identifier

property-declaration:
attributesopt property-modifiersopt type member-name

property-modifiers:
property-modifier
property-modifiers property-modifier

property-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern

member-name:
identifier
interface-type
. identifier

accessor-declarations:
get-accessor-declaration set-accessor-declarationopt
set-accessor-declaration get-accessor-declarationopt

get-accessor-declaration:
attributesopt
get accessor-body

set-accessor-declaration:
attributesopt
set accessor-body

accessor-body:
block
;

event-declaration:
attributesopt event-modifiersopt
event type variable-declarators ;
attributesopt event-modifiersopt event type member-name

event-modifiers:
event-modifier
event-modifiers event-modifier

event-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern

event-accessor-declarations:
add-accessor-declaration remove-accessor-declaration
remove-accessor-declaration add-accessor-declaration

add-accessor-declaration:
attributesopt
add block

remove-accessor-declaration:
attributesopt
remove block

indexer-declaration:
attributesopt indexer-modifiersopt indexer-declarator

indexer-modifiers:
indexer-modifier
indexer-modifiers indexer-modifier

indexer-modifier:
new
public
protected
internal
private
virtual
sealed
override
abstract

indexer-declarator:
type
this [ formal-parameter-list ]
type interface-type
. this [ formal-parameter-list ]

operator-declaration:
attributesopt operator-modifiers operator-declarator operator-body

operator-modifiers:
operator-modifier
operator-modifiers operator-modifier

operator-modifier:
public
static
extern

operator-declarator:
unary-operator-declarator
binary-operator-declarator
conversion-operator-declarator

unary-operator-declarator:
type
operator overloadable-unary-operator ( type identifier )

overloadable-unary-operator: one of
+ - ! ~ ++ -- true false

binary-operator-declarator:
type
operator overloadable-binary-operator ( type identifier , type identifier )

overloadable-binary-operator: one of
+ - * / % & | ^ << >> == != > < >= <=

conversion-operator-declarator:
implicit
operator type ( type identifier )
explicit operator type ( type identifier )

constructor-declaration:
attributesopt constructor-modifiersopt constructor-declarator constructor-body

constructor-modifiers:
constructor-modifier
constructor-modifiers constructor-modifier

constructor-modifier:
public
protected
internal

private
extern

constructor-declarator:
identifier
( formal-parameter-listopt ) constructor-initializeropt

constructor-initializer:
: base ( argument-listopt )
:
this ( argument-listopt )

static-constructor-declaration:
attributesopt
static identifier ( ) block

destructor-declaration:
attributesopt
~ identifier ( ) block

operator-body:
block
;

Structs

struct-declaration:
attributesopt struct-modifiersopt
struct identifier struct-interfacesopt struct-body ;opt

struct-modifiers:
struct-modifier
struct-modifiers struct-modifier

struct-modifier:
new
public
protected
internal

private

struct-interfaces:
: interface-type-list

struct-body:

struct-member-declarations:
struct-member-declaration
struct-member-declarations struct-member-declaration

struct-member-declaration:
constant-declaration
field-declaration
method-declaration
property-declaration
event-declaration
indexer-declaration
operator-declaration
constructor-declaration
static-constructor-declaration
type-declaration

Arrays

array-type:
non-array-type rank-specifiers

non-array-type:
type

rank-specifiers:
rank-specifier
rank-specifiers rank-specifier

rank-specifier:
[ dim-separatorsopt ]

dim-separators:
,
dim-separators
,

array-initializer:

variable-initializer-list:
variable-initializer
variable-initializer-list
, variable-initializer

variable-initializer:
expression
array-initializer

Interfaces

interface-declaration:
attributesopt interface-modifiersopt
interface identifier interface-baseopt interface-body ;opt

interface-modifiers:
interface-modifier
interface-modifiers interface-modifier

interface-modifier:
new
public
protected
internal

private

interface-base:
: interface-type-list

interface-body:

interface-member-declarations:
interface-member-declaration
interface-member-declarations interface-member-declaration

interface-member-declaration:
interface-method-declaration
interface-property-declaration
interface-event-declaration
interface-indexer-declaration

interface-method-declaration:
attributesopt
newopt return-type identifier ( formal-parameter-listopt ) ;

interface-property-declaration:
attributesopt
newopt type identifier

interface-accessors:
attributesopt
get ;
attributesopt set ;
attributesopt get ; attributesopt set ;
attributesopt
set ; attributesopt get ;

interface-event-declaration:
attributesopt
newopt event type identifier ;

interface-indexer-declaration:
attributesopt
newopt type this [ formal-parameter-list ]

Enums

enum-declaration:
attributesopt enum-modifiersopt
enum identifier enum-baseopt enum-body ;opt

enum-base:
: integral-type

enum-body:

enum-modifiers:
enum-modifier
enum-modifiers enum-modifier

enum-modifier:
new
public
protected
internal

private

enum-member-declarations:
enum-member-declaration
enum-member-declarations
, enum-member-declaration

enum-member-declaration:
attributesopt identifier
attributesopt identifier
= constant-expression

Delegates

delegate-declaration:
attributesopt delegate-modifiersopt
delegate return-type identifier ( formal-parameter-listopt ) ;

delegate-modifiers:
delegate-modifier
delegate-modifiers delegate-modifier

delegate-modifier:
new
public
protected
internal

private

Attributes

attributes:
attribute-sections

attribute-sections:
attribute-section
attribute-sections attribute-section

attribute-section:
[ attribute-target-specifieropt attribute-list ]
[
attribute-target-specifieropt attribute-list ,]

attribute-target-specifier:
attribute-target
:

attribute-target:
assembly
field
event
method
module
param
property
return
type

attribute-list:
attribute
attribute-list
, attribute

attribute:
attribute-name attribute-argumentsopt

attribute-name:
type-name

attribute-arguments:
( positional-argument-listopt )
(
positional-argument-list , named-argument-list )
(
named-argument-list )

positional-argument-list:
positional-argument
positional-argument-list
, positional-argument

positional-argument:
attribute-argument-expression

named-argument-list:
named-argument
named-argument-list
, named-argument

named-argument:
identifier
= attribute-argument-expression

attribute-argument-expression:
expression

Grammar extensions for unsafe code

Unsafe contexts

class-modifier:

unsafe

struct-modifier:

unsafe

interface-modifier:

unsafe

delegate-modifier:

unsafe

field-modifier:

unsafe

method-modifier:

unsafe

property-modifier:

unsafe

event-modifier:

unsafe

indexer-modifier:

unsafe

operator-modifier:

unsafe

constructor-modifier:

unsafe

destructor-declaration:
attributesopt
unsafeopt ~ identifier ( ) block

static-constructor-declaration:
attributesopt
unsafeopt static identifier ( ) block

embedded-statement:

unsafe-statement

unsafe-statement:
unsafe block

Pointer types

type:
value-type
reference-type
pointer-type

pointer-type:
unmanaged-type
*
void *

unmanaged-type:
type

Pointers in expressions

primary-expression-no-array-creation:

pointer-member-access
pointer-element-access
sizeof-expression

unary-expression:

pointer-indirection-expression
addressof-expression

Pointer indirection

pointer-indirection-expression:
* unary-expression

Pointer member access

pointer-member-access:
primary-expression
-> identifier

pointer-element-access:
primary-expression-no-array-creation
[ expression ]

The address-of operator

addressof-expression:
& unary-expression

The sizeof operator

sizeof-expression:
sizeof ( unmanaged-type )

embedded-statement:

fixed-statement

The fixed statement

fixed-statement:
fixed ( pointer-type fixed-pointer-declarators ) embedded-statement

fixed-pointer-declarators:
fixed-pointer-declarator
fixed-pointer-declarators
, fixed-pointer-declarator

fixed-pointer-declarator:
identifier
= fixed-pointer-initializer

fixed-pointer-initializer:
& variable-reference
expression variable-initializer:
expression
array-initializer
stackalloc-initializer

Stack allocation

stackalloc-initializer:
stackalloc unmanaged-type [ expression ]



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1007
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved