Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать
    1. Синтаксис

      1. Основные принципы

имя_пространства_имен: имя_пространства_имен_или_типа

имя_типа: имя_пространства_имен_или_типа

имя_пространства_имен_или_типа: идентификатор список аргументов типанеобязательно имя_пространства_имен_или_типа . идентификатор список_аргументов_типанеобязательно уточненный_член_псевдонима

      1. Типы

тип: тип_значения ссылочный_тип параметр_типа

тип_значения: тип_struct перечисляемый_тип

тип_struct: имя_типа простой_тип обнуляемый_тип

простой_тип: числовой_тип bool

числовой_тип: целый_тип тип_с_плавающей_запятой decimal

целый_тип: sbyte byte short ushort int uint long ulong char

тип_с_плавающей_запятой: float double

обнуляемый_тип: необнуляемый_тип_значений ?

необнуляемый_тип_значений: тип

перечисляемый_тип: имя_типа

ссылочный_тип: тип_класса тип_интерфейса тип_массива тип_делегата

тип_класса: имя_типа object dynamic string

тип_интерфейса: имя_типа

спецификации_ранга: спецификация_ранга спецификации_ранга спецификация_ранга

спецификация_ранга: [ разделители_размерностейнеобязательно ]

разделители_размерностей: , разделители_размерностей ,

тип_делегата: имя_типа

список_аргументов_типа: < аргументы_типа >

аргументы_типа: аргумент_типа аргументы_типа , аргумент_типа

аргумент_типа: тип

параметр_типа: идентификатор

      1. Переменные

ссылочная_переменная: выражение

      1. Выражения

список_аргументов: аргумент список_аргументов , аргумент

аргумент: имя_аргументанеобязательно значение_аргумента

Пример: имя идентификатора

значение_аргумента: выражение ref ссылочная_переменная out ссылочная_переменная

первичное_выражение: первичное_выражение_создания_не_массива выражение_создания_массива

первичное_выражение_создания_не_массива: литерал простое_имя выражение_в_скобках доступ_к_члену выражение_вызова доступ_к_элементу доступ_this доступ_base выражение_после_инкремента выражение_после_декремента выражение_создания_объекта выражение_создания_делегата выражение_создания_анонимного_объекта выражение_typeof выражение_checked выражение_unchecked выражение_значения_по_умолчанию выражение_анонимного_метода

простое_имя: индетификатор список_аргументов_типанеобязательно

выражение_в_скобках: ( выражение )

метод_доступа_к_члену: основное_выражение . идентификатор список аргументов типанеобяз стандартный тип . идентификатор список аргументов типанеобяз уточненный член псевдонима . идентификатор

встроенный тип: один из следующих: bool byte char decimal double float int long object sbyte short string uint ulong ushort

выражение_вызова: первичное_выражение ( список_аргументовнеобязательно )

доступ_к_элементу: первичное_выражение_создания_не_массива [ список_аргументов ]

доступ_через_this: this

доступ_base: base . идентификатор base [ список_аргументов ]

выражение_после_инкремента: первичное_выражение ++

выражение_после_декремента: первичное_выражение --

выражение_создания_объекта: new тип ( список_аргументовнеобязательно ) инициализатор_объекта_или_коллекциинеобязательно new тип инициализатор_объекта_или_коллекции

инициализатор_объекта_или_коллекции: инициализатор_объекта инициализатор_коллекции

инициализатор_объекта: { список_инициализаторов_членовнеобязательно } { список_инициализаторов_членов , }

список_инициализаторов_членов: инициализатор_члена список_инициализаторов_членов , инициализатор_члена

инициализатор_члена: идентификатор = значение_идентификатора

значение_идентификатора: выражение инициализатор_объекта_или_коллекции

инициализатор_коллекции: { список_инициализаторов_элементов } { список_инициализаторов_элементов , }

список_инициализаторов_элементов: инициализатор_элемента список_инициализаторов_элементов , инициализатор_элемента

инициализатор_элемента: выражение_не_присваивания { список_выражений }

список_выражений: выражение список_выражений , выражение

выражение_создания_массива: new тип_не_массива [ список_выражений ] спецификации_ранганеобязательно инициализатор_массиванеобязательно new тип_массива инициализатор_массива new спецификация_ранга инициализатор_массива

выражение_создания_делегата: new тип_делегата ( выражение )

выражение_создания_анонимного_объекта: new инициализатор_анонимного_объекта

инициализатор_анонимного_объекта: { список_деклараторов_членовнеобязательно } { список_деклараторов_членов , }

список_деклараторов_членов: декларатор_члена список_деклараторов_членов , декларатор_члена

декларатор_члена: простое_имя метод_доступа_к_члену идентификатор = выражение

выражение_typeof: typeof ( тип ) typeof ( имя_непривязанного_типа ) typeof ( void )

имя_непривязанного_типа: идентификатор спецификация_универсального_измерениянеобязательно идентификатор :: идентификатор спецификация_универсального_измерениянеобязательно имя_непривязанного_типа . идентификатор спецификация_универсального_измерениянеобязательно

спецификация_универсального_измерения: < запятыенеобязательно >

запятые: , запятые ,

выражение_checked: checked ( выражение )

выражение_unchecked: unchecked ( выражение )

выражение_значения_по_умолчанию: default ( тип )

унарное_выражение + унарное_выражение - унарное_выражение ! унарное_выражение ~ унарное_выражение выражение_инкремента_в_префиксе выражение_декремента_в_префиксе выражение_приведения_типа

выражение_до_инкремента: ++ унарное_выражение

выражение_до_декремента: -- унарное_выражение

выражение_приведения_к_типу: ( тип ) унарное_выражение

мультипликативное_выражение: унарное_выражение мультипликативное_выражение * унарное_выражение мультипликативное_выражение / унарное_выражение мультипликативное_выражение % унарное_выражение

аддитивное_выражение: мультипликативное_выражение аддитивное_выражение + мультипликативное_выражение аддитивное_выражение – мультипликативное_выражение

выражение_сдвига: аддитивное_выражение выражение_сдвига << аддитивное_выражение выражение_сдвига сдвиг_вправо аддитивное_выражение

реляционное_выражение: выражение_сдвига реляционное_выражение < выражение_сдвига реляционное_выражение > выражение_сдвига реляционное_выражение <= выражение_сдвига реляционное_выражение >= выражение_сдвига реляционное_выражение is тип реляционное_выражение as тип

выражение_равенства: реляционное_выражение выражение_равенства == реляционное_выражение выражение_равенства != реляционное_выражение

выражение_И: выражение_равенства выражение_И & выражение_равенства

выражение_исключающего_ИЛИ: выражение_И выражение_исключающего_ИЛИ ^ выражение_И

выражение_включающего_ИЛИ: выражение_исключающего_ИЛИ выражение_включающего_ИЛИ | выражение_исключающего_ИЛИ

выражение_условного_И: выражение_включающего_ИЛИ выражение_условного_И && выражение_включающего_ИЛИ

выражение_условного_ИЛИ: выражение_условного_И выражение_условного_ИЛИ || выражение_условного_И

выражение_слияния_с_null: выражение_условного_ИЛИ выражение_условного_ИЛИ ?? выражение_слияния_с_null

условное_выражение: выражение_слияния_с_null выражение_слияния_с_null ? выражение : выражение

лямбда_выражение: подпись_анонимной_функции => тело_анонимной_функции

выражение_анонимного_метода: delegate подпись_явной_анонимной_функциинеобязательно блок

сигнатура_анонимной_функции: сигнатура_явной_анонимной_функции сигнатура_неявной_анонимной_функции

подпись_явной_анонимной_функции: ( список_параметров_явной_анонимной_функциинеобязательно )

список_параметров_явной_анонимной_функции: параметр_явной_анонимной_функции список_параметров_явной_анонимной_функции , параметр_явной_анонимной_функции

параметр_явной_анонимной_функции: модификатор_параметра_анонимной_функциинеобязательно тип идентификатор

модификатор_параметра_анонимной_функции: ref out

подпись_неявной_анонимной_функции: ( список_параметров_неявной_анонимной_функциинеобязательно ) параметр_неявной_анонимной_функции

список_параметров_неявной_анонимной_функции: параметр_неявной_анонимной_функции список_параметров_неявной_анонимной_функции , параметр_неявной_анонимной_функции

параметр_неявной_анонимной_функции: идентификатор

тело_анонимной_функции: выражение блок

выражение_запроса: предложение_from тело_запроса

предложение_from: from типнеобязательно идентификатор in выражение

тело_запроса: предложения_тела_запросанеобязательно предложение_select_или_group дополнительный_запроснеобязательно

предложения_тела_запроса: предложение_тела_запроса предложения_тела_запроса предложение_тела_запроса

предложение_тела_запроса: предложение_from предложение_let предложение_where предложение_join предложение_join-into предложение_orderby

предложение_let: let идентификатор = выражение

предложение_where: where логическое_выражение

предложение_join: join типнеобязательно идентификатор in выражение on выражение equals выражение

предложение_join-into: join типнеобязательно идентификатор in выражение on выражение equals выражение into идентификатор

предложение_orderby: orderby упорядочения

упорядочения: упорядочение упорядочения , упорядочение

упорядочение: выражение направление_упорядочениянеобязательно

направление_упорядочения: ascending descending

предложение_select_или_group: предложение_select предложение_group

предложение_select: select выражение

предложение_group: group выражение by выражение

объединение_запросов: into идентификатор тело_запроса

присваивание: унарное_выражение оператор_присваивания выражение

оператор_присваивания: = += -= *= /= %= &= |= ^= <<= присваивание_со_сдвигом_вправо

выражение: выражение_не_присваивания присваивание

выражение_не_присваивания: условное_выражение выражение_лямбда выражение_запроса

константное_выражение: выражение

логическое_выражение: выражение

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]