Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C-sharp language specification.2004.pdf
Скачиваний:
14
Добавлен:
23.08.2013
Размер:
2.55 Mб
Скачать

 

C# LANGUAGE SPECIFICATION

 

 

1

file-name-character::

 

 

2

Any character except " (U+0022), and new-line-character

 

3

pp-diagnostic::

 

 

4

whitespaceopt # whitespaceopt error whitespaceopt pp-message

5

whitespaceopt # whitespaceopt

warning whitespaceopt

pp-message

6

pp-message::

 

 

7

input-charactersopt new-line

 

 

8

pp-region::

 

 

9

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

 

10

pp-start-region::

 

 

11

whitespaceopt # whitespaceopt

region whitespaceopt

pp-message

12

pp-end-region::

 

 

13

whitespaceopt # whitespaceopt

endregion whitespaceopt pp-message

14

pp-pragma:

 

 

15

whitespaceopt # whitespaceopt

pragma pp-pragma-text

16

pp-pragma-text:

 

 

17

new-line

 

 

18

whitespace input-charactersopt

new-line

 

19A.2 Syntactic grammar

20A.2.1 Basic concepts

21compilation-unit:

22

extern-alias-directivesopt using-directivesopt global-attributesopt

23

namespace-member-declarationsopt

24

namespace-name:

25

namespace-or-type-name

26

type-name:

27

namespace-or-type-name

28

namespace-or-type-name:

29

identifier type-argument-listopt

30

namespace-or-type-name . identifier type-argument-listopt

31

qualified-alias-member

32A.2.2 Types

33type:

34

value-type

35

reference-type

36

type-parameter

37

value-type:

38

struct-type

39

enum-type

40

struct-type:

41

type-name

42

simple-type

43

simple-type:

44

numeric-type

45

bool

440

Annex A Grammar

1

numeric-type:

2

integral-type

3

floating-point-type

4decimal

5integral-type:

6

sbyte

7

byte

8

short

9

ushort

10

int

11

uint

12

long

13

ulong

14char

15floating-point-type:

16 float

17double

18enum-type:

19

type-name

20

reference-type:

21

class-type

22

interface-type

23

array-type

24

delegate-type

25

class-type:

26

type-name

27

object

28string

29interface-type:

30

type-name

31

array-type:

32

non-array-type rank-specifiers

33

non-array-type:

34

type

35

rank-specifiers:

36

rank-specifier

37

rank-specifiers rank-specifier

38

rank-specifier:

39

[ dim-separatorsopt ]

40

dim-separators:

41

,

42

dim-separators ,

43

delegate-type:

44

type-name

45

A.2.3 Variables

46

47

variable-reference: expression

441

C# LANGUAGE SPECIFICATION

1A.2.4 Expressions

2argument-list:

3

argument

4

argument-list , argument

5

argument:

6

expression

7

ref variable-reference

8out variable-reference

9primary-expression:

10

array-creation-expression

11

primary-no-array-creation-expression

12

primary-no-array-creation-expression:

13

literal

14

simple-name

15

parenthesized-expression

16

member-access

17

invocation-expression

18

element-access

19

this-access

20

base-access

21

post-increment-expression

22

post-decrement-expression

23

object-creation-expression

24

delegate-creation-expression

25

typeof-expression

26

checked-expression

27

unchecked-expression

28

default-value-expression

29

anonymous-method-expression

30

simple-name:

31

identifier type-argument-listopt

32 parenthesized-expression:

33( expression )

34member-access:

35

primary-expression . identifier type-argument-listopt

 

 

 

36

predefined-type . identifier type-argument-listopt

 

 

 

37

qualified-alias-member . identifier type-argument-listopt

 

 

 

38

predefined-type: one of

 

 

 

 

 

 

39

bool

byte

char

decimal

double

float

int

long

40

object

sbyte

short

string

uint

ulong

ushort

 

41

invocation-expression:

 

 

 

 

 

 

42

primary-expression ( argument-listopt )

 

 

 

 

43

element-access:

 

 

 

 

 

 

 

44

primary-no-array-creation-expression [ expression-list ]

 

 

45

expression-list:

 

 

 

 

 

 

 

46

expression

 

 

 

 

 

 

 

47

expression-list , expression

 

 

 

 

 

48

this-access:

 

 

 

 

 

 

 

49

this

 

 

 

 

 

 

 

442

 

Annex A Grammar

1

base-access:

2

base . identifier type-argument-listopt

3

base [ expression-list ]

4

post-increment-expression:

5

primary-expression ++

6

post-decrement-expression:

7

primary-expression --

8

object-creation-expression:

9

new type ( argument-listopt )

10

array-creation-expression:

11

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

12new array-type array-initializer

13delegate-creation-expression:

14

new delegate-type ( expression )

15

typeof-expression:

16

typeof ( type )

17typeof ( void )

18checked-expression:

19checked ( expression )

20unchecked-expression:

21unchecked ( expression )

22default-value-expression:

23

default ( primary-expression )

24 anonymous-method-expression:

25delegate anonymous-method-signatureopt block

26anonymous-method-signature:

27( anonymous-method-parameter-listopt )

28anonymous-method-parameter-list:

29

anonymous-method-parameter

30

anonymous-method-parameter-list , anonymous-method-parameter

31

anonymous-method-parameter:

32

parameter-modifieropt type identifier

33

unary-expression:

34

primary-expression

35

+

unary-expression

36

-

unary-expression

37

!

unary-expression

38

~

unary-expression

39

pre-increment-expression

40

pre-decrement-expression

41

cast-expression

42 pre-increment-expression:

43++ unary-expression

44pre-decrement-expression:

45-- unary-expression

46cast-expression:

47

( type ) unary-expression

443

 

C# LANGUAGE SPECIFICATION

 

 

 

 

 

 

 

1

multiplicative-expression:

 

 

 

 

 

 

 

2

unary-expression

 

 

 

 

 

 

 

 

3

multiplicative-expression * unary-expression

 

 

 

4

multiplicative-expression / unary-expression

 

 

 

5

multiplicative-expression % unary-expression

 

 

 

6

additive-expression:

 

 

 

 

 

 

 

 

7

multiplicative-expression

 

 

 

 

 

 

 

8

additive-expression + multiplicative-expression

 

 

 

9

additive-expression multiplicative-expression

 

 

 

10

shift-expression:

 

 

 

 

 

 

 

 

11

additive-expression

 

 

 

 

 

 

 

12

shift-expression << additive-expression

 

 

 

 

13

shift-expression right-shift additive-expression

 

 

 

14

relational-expression:

 

 

 

 

 

 

 

 

15

shift-expression

 

 

 

 

 

 

 

 

16

relational-expression < shift-expression

 

 

 

 

17

relational-expression > shift-expression

 

 

 

 

18

relational-expression <= shift-expression

 

 

 

 

19

relational-expression >= shift-expression

 

 

 

 

20

relational-expression is type

 

 

 

 

 

 

21

relational-expression as type

 

 

 

 

 

 

22

equality-expression:

 

 

 

 

 

 

 

 

23

relational-expression

 

 

 

 

 

 

 

24

equality-expression == relational-expression

 

 

 

25

equality-expression != relational-expression

 

 

 

26

and-expression:

 

 

 

 

 

 

 

 

 

27

equality-expression

 

 

 

 

 

 

 

28

and-expression & equality-expression

 

 

 

 

29

exclusive-or-expression:

 

 

 

 

 

 

 

30

and-expression

 

 

 

 

 

 

 

 

31

exclusive-or-expression ^ and-expression

 

 

 

 

32

inclusive-or-expression:

 

 

 

 

 

 

 

33

exclusive-or-expression

 

 

 

 

 

 

 

34

inclusive-or-expression | exclusive-or-expression

 

 

 

35

conditional-and-expression:

 

 

 

 

 

 

 

36

inclusive-or-expression

 

 

 

 

 

 

 

37

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

 

 

38

conditional-or-expression:

 

 

 

 

 

 

 

39

conditional-and-expression

 

 

 

 

 

 

40

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

 

 

41

conditional-expression:

 

 

 

 

 

 

 

42

conditional-or-expression

 

 

 

 

 

 

 

43

conditional-or-expression ? expression : expression

 

 

44

assignment:

 

 

 

 

 

 

 

 

 

45

unary-expression assignment-operator expression

 

 

 

46

assignment-operator: one of

 

 

 

 

 

 

right-shift-assignment

47

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

444

Соседние файлы в предмете Электротехника