Tokeny i zestawy znaków

Tekst programu C++ składa się z tokenów i białych znaków. Token jest najmniejszym elementem programu C++, który ma znaczenie dla kompilatora. Analizator języka C++ rozpoznaje tego rodzaju tokeny:

Tokeny są zwykle oddzielone białym znakiem, co może być co najmniej jednym:

  • Wartości puste
  • Karty poziome lub pionowe
  • Nowe wiersze
  • Źródła danych formularzy
  • Komentarze

Podstawowy zestaw znaków źródłowych

Standard C++ określa podstawowy zestaw znaków źródłowych, który może być używany w plikach źródłowych. Aby reprezentować znaki poza tym zestawem, można określić dodatkowe znaki przy użyciu uniwersalnej nazwy znaków. Implementacja MSVC umożliwia stosowanie dodatkowych znaków. Podstawowy źródłowy zestaw znaków składa się z 96 znaków, które mogą być używane w plikach źródłowych. Ten zestaw zawiera znak spacji, kartę poziomą, kartę pionową, kanał informacyjny formularza i znaki kontrolek nowego wiersza oraz ten zestaw znaków graficznych:

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

_ { } [ ] # ( ) < > % : ; . ? * + - / ^ & | ~ ! = , \ " '

Specyficzne dla firmy Microsoft

MSVC zawiera $ znak jako element członkowski podstawowego zestawu znaków źródłowych. Program MSVC umożliwia również używanie dodatkowego zestawu znaków w plikach źródłowych na podstawie kodowania pliku. Domyślnie program Visual Studio przechowuje pliki źródłowe przy użyciu domyślnej strony kodowej. Gdy pliki źródłowe są zapisywane przy użyciu strony kodowej specyficznej dla ustawień regionalnych lub strony kodowej Unicode, MSVC umożliwia używanie dowolnych znaków tej strony kodowej w kodzie źródłowym, z wyjątkiem kodów kontrolnych, które nie są jawnie dozwolone w podstawowym zestawie znaków źródłowych. Można na przykład umieścić japońskie znaki w komentarzach, identyfikatorach lub literałach ciągu, jeśli zapiszesz plik przy użyciu japońskiej strony kodowej. MSVC nie zezwala na sekwencje znaków, których nie można przetłumaczyć na prawidłowe znaki wielobajtowe ani punkty kodu Unicode. W zależności od opcji kompilatora nie wszystkie dozwolone znaki mogą być wyświetlane w identyfikatorach. Aby uzyskać więcej informacji, zobacz temat Identyfikatory.

END Microsoft Specific

Nazwy znaków uniwersalnych

Ponieważ programy języka C++ mogą używać o wiele więcej znaków niż te określone w podstawowym zestawie znaków źródłowych, można określić te znaki w przenośny sposób przy użyciu uniwersalnych nazw znaków. Nazwa znaku uniwersalnego składa się z sekwencji znaków reprezentujących punkt kodu Unicode. Mają one dwie formy. Służy \UNNNNNNNN do reprezentowania punktu kodu Unicode formularza U+NNNNNNNN, gdzie NNNNNNNN jest ośmiocyfrowym numerem punktu kodu szesnastkowego. Użyj czterech cyfr \uNNNN , aby reprezentować punkt kodu Unicode formularza U+0000NNNN.

Nazwy znaków uniwersalnych mogą być używane w identyfikatorach i literałach ciągów i znaków. Nie można użyć uniwersalnej nazwy znaku do reprezentowania zastępczego punktu kodu w zakresie 0xD800-0xDFFF. Zamiast tego użyj żądanego punktu kodu; kompilator automatycznie generuje wszelkie wymagane zastępcy. Dodatkowe ograniczenia dotyczą uniwersalnych nazw znaków, które mogą być używane w identyfikatorach. Aby uzyskać więcej informacji, zobacz Identyfikatory i Ciąg i Literały znaków.

Specyficzne dla firmy Microsoft

Kompilator języka Microsoft C++ traktuje znak w postaci uniwersalnej nazwy znaków i literału wymiennie. Można na przykład zadeklarować identyfikator przy użyciu formularza nazwy uniwersalnego znaku i użyć go w postaci literału:

auto \u30AD = 42; // \u30AD is 'キ'
if (キ == 42) return true; // \u30AD and キ are the same to the compiler

Format znaków rozszerzonych w schowku systemu Windows jest specyficzny dla ustawień regionalnych aplikacji. Wycinanie i wklejanie tych znaków do kodu z innej aplikacji może spowodować wprowadzenie nieoczekiwanych kodowań znaków. Może to spowodować analizowanie błędów bez widocznej przyczyny w kodzie. Zalecamy ustawienie kodowania pliku źródłowego na stronę kodową Unicode przed wklejeniem znaków rozszerzonych. Zalecamy również użycie edytora IME lub aplikacji Mapa znaków w celu wygenerowania znaków rozszerzonych.

END Microsoft Specific

Zestawy znaków wykonywania

Zestawy znaków wykonywania reprezentują znaki i ciągi, które mogą pojawić się w skompilowanym programie. Te zestawy znaków składają się ze wszystkich znaków dozwolonych w pliku źródłowym, a także znaków sterujących reprezentujących alert, backspace, powrotu karetki i znaku null. Zestaw znaków wykonywania ma reprezentację specyficzną dla ustawień regionalnych.