В прошлом было принято реализовывать лексеры / токенизаторы так, чтобы они возвращали значения «маленького целого» для каждого типа токена: например,
IF the next token is the word "def" THEN RETURN 257 FI
. Объединяя это с использованием 7 или 8-битных наборов символов, мы сразу видим, что все 256 возможных значений символов доступны в качестве значений токенов. Таким образом, «(
» может быть просто токеном номер 40 (см. Любую таблицу ASCII).
Вы часто можете сказать, использует ли кто-то такую запись, потому что односимвольные операторы, такие как +
, будут кодироваться таким образом. (+
= 43), но двухсимвольный оператор, такой как +=
, будет иметь именованный токен. Другая дешевая распродажа происходит, когда код, который генерирует код поиска токена, генерирует таблицу токенов, и первое имя цифра токена c чуть выше 255, максимальное 8-битное значение.
В конце концов, это не очень важно: это просто изюминка реализации. Если вы напишите свой собственный сканер и парсер, вы сделаете все возможное, чтобы вернуть соответствующий токен-код вашему парсеру. Как превратить некоторый входной синтаксис в соответствующий код зависит от вас.