Шрифт:
программа должна создать список лексем
• Литералы с плавающей точкой, определенные в языке C++, например
• Операторы, например
• Скобки
Внешний вид литералов с плавающей точкой может создать проблемы: считать число
Как представить такие лексемы в нашей программе? Можно попытаться найти начало (и конец) лексемы, но это может привести к путанице (особенно, если позволить выражениям занимать несколько строк). Кроме того, если хранить числа в виде строки символов, то позднее следует идентифицировать это число по его цифрам; например, если мы видим строку
Вид идентифицирует лексему как число, оператор или скобку. Для чисел (в нашем примере — только для чисел) в качестве значения используется само число.
Итак, как же выразить идею о паре (вид, значение) в программе? Для этого определим тип Token, представляющий лексемы. Почему? Вспомните, почему мы вообще используем типы: они хранят данные, которые нам нужны, и предоставляют возможность выполнять полезные операции над этими данными. Например, тип
Среди наших любимых типов, которых нет в библиотеке, — классы
6.3.3. Реализация лексем
Как должна выглядеть лексема в нашей программе? Иначе говоря, как должен выглядеть тип
Существует много способов реализации этой идеи в программе на языке С++. Вот ее простейший вариант:
Класс
Для доступа к члену класса используется обозначение имя_объекта.имя_члена. Выражение