Compartilhar via


Gramática

As instruções HLSL são construídas usando as regras a seguir para gramática.

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.

Apêndice (DirectX HLSL)