Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte 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



DOCUMENTE SIMILARE

Trimite pe Messenger
Standard conversions
Pre-processing directives
Automatic memory management
Boxing and unboxing: Boxing conversions
Operators
The empty statement
Structs
Statements
Static constructors
Definite assignment


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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 803
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 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site