Грамматика

Инструкции HLSL создаются с использованием следующих правил для грамматики.

Пробелы

Следующие символы распознаются как пробелы.

  • SPACE
  • TAB
  • EOL
  • Комментарии в стиле C (/* */)
  • Комментарии стиля C++ (//)

Числа с плавающей запятой

Числа с плавающей запятой представлены в HLSL следующим образом:

  • fractional-constant exponent-part(opt) floating-suffix(opt)

    digit-sequence exponent-part floating-suffix(opt)

  • фракционно-константная :

    digit-sequence(opt) . последовательность цифр

    digit-sequence .

  • экспонентная часть :

    e sign(opt) digit-sequence

    E sign(opt) digit-sequence

  • sign : один из указанных ниже знаков

    + -

  • digit-sequence:

    цифровой-знак

    последовательность-цифр цифра

  • floating-suffix : одно из указанных ниже значений

    h H f F L L

    Используйте суффикс "L", чтобы указать полный литерал с плавающей запятой 64-разрядной точности. По умолчанию используется 32-разрядный литерал с плавающей запятой.

    Например, компилятор распознает следующее литеральное значение как литерал с плавающей запятой 32-разрядной точности и игнорирует нижние биты:

    double x = -0.6473313946860445;
    

    Компилятор распознает следующее литеральное значение как литерал с плавающей запятой 64-разрядной точности:

    double x = -0.6473313946860445L;
    

Целые числа

Целочисленные числа представлены в HLSL следующим образом:

  • integer-constant integer-suffix(opt)

  • целочисленная константа: один из

    # (десятичное число)

    0# (восьмеричное число)

    0x# (шестнадцатеричное число)

  • Integer-suffix может иметь любой из следующих значений:

    u U l L

Characters

Символы представлены в HLSL следующим образом:

Знак Описание
"c" (символ)
'\a' '\b' '\f' '\b' '\r' '\t' '\v' (escape-файлы)
'\###' (восьмеричная escape-версия, каждый # является восьмеричной цифрой)
'\x#' (шестнадцатеричное экранирование, #— шестнадцатеричное число, любое число цифр)
'\c' (c — другой символ, включая обратную косую черту и кавычки)

 

Escape-операции не поддерживаются в выражениях препроцессора.

строк

Строки представлены в HLSL следующим образом:

"s" (s — это любая строка с escape-символами).

Идентификаторы

Идентификаторы представлены в HLSL следующим образом:

    [A-Za-z_][A-Za-z0-9_]*

Операторы

##, #@, ++, --, &, &, &, ||, ==, ::, <<, <<=, >>, >>=, ..., 
<=, >=, !=, *=, /=, +=, -=, %=, &=, |=, ^=, ->

Кроме того, любой другой символ, не соответствующий другому правилу.

Приложение (DirectX HLSL)