Condividi tramite


Grammatica

Le istruzioni HLSL vengono costruite usando le regole seguenti per la grammatica.

Spazio vuoto

I caratteri seguenti vengono riconosciuti come spazi vuoti.

  • SPACE
  • TAB
  • EOL
  • Commenti di stile C (/* */)
  • Commenti di stile C++ (//)

Numeri a virgola mobile

I numeri a virgola mobile sono rappresentati in HLSL come indicato di seguito:

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

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

  • frazionaria-costante :

    digit-sequence(opt) . digit-sequence

    digit-sequence .

  • esponente-part :

    e sign(opt) digit-sequence

    Sequenza di cifre E sign(opt)

  • sign : uno tra

    + -

  • digit-sequence :

    digit

    digit-sequence digit

  • floating-suffix : uno tra

    h H f F l L

    Usare il suffisso "L" per specificare un valore letterale a virgola mobile a precisione a 64 bit completo. Un valore letterale float a 32 bit è l'impostazione predefinita.

    Ad esempio, il compilatore riconosce il valore letterale seguente come valore letterale a virgola mobile a precisione a 32 bit e ignora i bit inferiori:

    double x = -0.6473313946860445;
    

    Il compilatore riconosce il valore letterale seguente come valore letterale a virgola mobile e precisione a 64 bit:

    double x = -0.6473313946860445L;
    

Numeri interi

I numeri interi sono rappresentati in HLSL come indicato di seguito:

  • integer-constant integer-suffix(opt)

  • integer-constant: uno dei

    # (numero decimale)

    0# (numero ottale)

    0x# (numero esadecimale)

  • Integer-suffisso può essere uno dei seguenti:

    u U L

Caratteri

I caratteri sono rappresentati in HLSL come indicato di seguito:

Carattere Descrizione
'c' (carattere)
'\a' '\b' '\f' '\b' '\r' '\t' '\v' (escape)
'\###' (escape ottale, ogni # è una cifra ottale)
'\x#' (escape esadecimale, # è numero esadecimale, qualsiasi numero di cifre)
'\c' (c è un altro carattere, inclusa la barra rovesciata e le virgolette)

 

Le escape non sono supportate nelle espressioni del preprocessore.

Stringhe

Le stringhe sono rappresentate in HLSL come indicato di seguito:

"s" (s è qualsiasi stringa con caratteri di escape).

Identificatori

Gli identificatori sono rappresentati in HLSL come indicato di seguito:

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

Operatori

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

Qualsiasi altro carattere singolo che non corrisponde a un'altra regola.

Appendice (DirectX HLSL)