В конструкции компилятора символ совпадает с токеном? - PullRequest
11 голосов
/ 29 июля 2011

В конструкции компилятора, когда вы говорите о токенах, токен такой же, как символ / просто еще один термин для символа? После некоторого исследования, я думаю, чтобы понять, что токен является символом со ссылкой на таблицу символов, поэтому какой-то атрибутированный символ / символ с некоторой дополнительной информацией? Спасибо за любое уточнение: -)

Ответы [ 2 ]

14 голосов
/ 29 июля 2011

Маркер не обязательно является символом в таблице символов.Например, если токен является зарезервированным словом, он не вводится в таблицу символов.Если токен является идентификатором, то он, вероятно, будет введен в таблицу символов.

Возьмем, к примеру, следующее объявление:

char s[100];

Лексический анализатор может вывести следующие токены:

<"char", IDENTIFIER>

в зависимости от реализации его можно распознать как зарезервированное слово или ввести в таблицу символов как предопределенное имя типа (здесь я не уверен на 100%),

<"s", IDENTIFIER>

«s» вводится в таблицу символов как идентификатор переменной,

<"[", OPEN_SQUARE_BRACKET>

не вводится в таблицу символов,

<"100", INTEGER_LITERAL>

не вводится в таблицу символов,

<"]", CLOSE_SQUARE_BRACKET>

не введено в таблицу символов,

<";", SEMI_COLON>

не введено в таблицу символов.

Таким образом, вы в основном вводите в таблицу символов только те токены, на которые вам нужно будет ссылаться позже во время компиляциипроцесс.Например, позже в теле функции, когда вы найдете

strcpy(s, "Hello, world\n");

, вы снова узнаете токен <"s", IDENTIFIER> и ищите его в таблице символов.Таблица символов скажет, что «s» было объявлено как переменная типа char [].

Итак, я бы сказал, токен - это любой фрагмент ввода, который распознаетсялексический анализатор, и что только определенные токены со специальным значением вводятся как символы в таблице символов.

0 голосов
/ 02 июля 2017

Символ - это ДАННАЯ константа В ЭТОМ КЛЮЧЕ, как в S = S в этой таблице, или Pi = Pi в этом уравнении, в то время как токен представляет данные как среду обмена в этом условии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...