Gramática
As instruções HLSL são construídas usando as regras a seguir para gramática.
- Espaço em branco
- Números de ponto flutuante
- Números inteiros
- Caracteres
- Cadeias de caracteres
- Identificadores
- Operadores
- Tópicos relacionados
Espaço em branco
Os caracteres a seguir são reconhecidos como espaço em branco.
- SPACE
- TAB
- EOL
- Comentários de estilo C (/* */)
- Comentários de estilo do C++ (//)
Números de ponto flutuante
Os números de ponto flutuante são representados no HLSL da seguinte maneira:
fracionário-constante expoente-parte(opt) sufixo flutuante(opt)
digit-sequence exponent-part floating-suffix(opt)
fractional-constant :
digit-sequence(opt) . digit-sequence
digit-sequence .
exponent-part :
e sign(opt) digit-sequence
E sign(opt) digit-sequence
sign : one of
+ -
digit-sequence :
{1>digit<1}
digit-sequence digit
floating-suffix : one of
h H f F l L
Use o sufixo "L" para especificar um literal de ponto flutuante de precisão de 64 bits completo. Um literal float de 32 bits é o padrão.
Por exemplo, o compilador reconhece o seguinte valor literal como um literal de ponto flutuante de precisão de 32 bits e ignora os bits inferiores:
double x = -0.6473313946860445;
O compilador reconhece o seguinte valor literal como um literal de ponto flutuante de precisão de 64 bits:
double x = -0.6473313946860445L;
Números inteiros
Os números inteiros são representados no HLSL da seguinte maneira:
integer-constant integer-suffix(opt)
integer-constant: um dos
# (número decimal)
0# (número octal)
0x# (número hexadecimais)
integer-suffix pode ser qualquer um destes:
u U l L
Characters
Os caracteres são representados no HLSL da seguinte maneira:
Caractere | Descrição |
---|---|
'c' | (caractere) |
'\a' '\b' '\f' '\b' '\r' '\t' '\v' | (escapes) |
'\###' | (escape octal, cada # é um dígito octal) |
'\x#' | (escape hex, # é número hexadecimal, qualquer número de dígitos) |
'\c' | (c é outro caractere, incluindo barra invertida e aspas) |
Não há suporte para escapes em expressões de pré-processador.
Cadeias de caracteres
As cadeias de caracteres são representadas no HLSL da seguinte maneira:
"s" (s é qualquer cadeia de caracteres com escapes).
Identificadores
Os identificadores são representados no HLSL da seguinte maneira:
[A-Za-z_][A-Za-z0-9_]*
Operadores
##, #@, ++, --, &, &, &, ||, ==, ::, <<, <<=, >>, >>=, ...,
<=, >=, !=, *=, /=, +=, -=, %=, &=, |=, ^=, ->
Além disso, qualquer outro caractere único que não corresponda a outra regra.
Tópicos relacionados