2015-08-24 3 views
0

S ++ использует ':' в качестве операции спецификации типа, а также для сопоставления ключей со значениями в словарях, '::' в качестве конкатенации и ': =' как назначение. Все используют префикс ':'.Как лексер различает маркеры ':', '::' и ': =' друг от друга?

1) Как лексер различает токены::, ::: и ': =' друг от друга?

2) Как лексер различает два использования ':'?

ответ

1

1. Это основной лексический анализ. Как только вы увидите :, вы знаете, что это может быть один из нескольких символов, поэтому вам нужно взглянуть на следующий символ, прежде чем вы сможете решить, что у вас есть.

2. Это не так. Это просто говорит, что у нас есть токен DOUBLE_COLON. Следующий шаг (парсер) определит, что означает DOUBLE_COLON.