Таблицы синтаксиса реализованы как char-tables (см. Char-Tables), но большинство программ на Lisp не работают напрямую с их элементами. Таблицы синтаксиса не хранят синтаксические данные в виде синтаксических дескрипторов (см. Синтаксические дескрипторы); они используют внутренний формат, который описан в этом разделе. Этот внутренний формат также может быть назначен в качестве синтаксических свойств (см. Синтаксические свойства).
Каждая запись в таблице синтаксиса — это сырой синтаксический дескриптор:
cons-ячейка вида (syntax-code
. matching-char). syntax-code — это целое число,
которое кодирует класс синтаксиса и флаги синтаксиса в соответствии с таблицей ниже.
matching-char, если не nil, указывает соответствующий
символ совпадения (подобно второму символу в синтаксическом дескрипторе).
Используйте aref (см. Функции, работающие с массивами),
чтобы получить сырой синтаксический дескриптор символа, например (aref (syntax-table) ch).
Ниже приведены коды синтаксиса, соответствующие различным классам синтаксиса:
| Код | Класс | Код | Класс |
| 0 | whitespace | 8 | paired delimiter |
| 1 | punctuation | 9 | escape |
| 2 | word | 10 | character quote |
| 3 | symbol | 11 | comment-start |
| 4 | open parenthesis | 12 | comment-end |
| 5 | close parenthesis | 13 | inherit |
| 6 | expression prefix | 14 | generic comment |
| 7 | string quote | 15 | generic string |
Например, в стандартной таблице синтаксиса запись для ‘(’
составляет (4 . 41). 41 — это код символа для ‘)’.
Флаги синтаксиса кодируются в старших битах, начиная с 16-го бита от наименее значащего бита. Эта таблица показывает степень двойки, соответствующую каждому флагу синтаксиса.
| Префикс | Флаг | Префикс | Флаг |
| ‘1’ | (ash 1 16) | ‘p’ | (ash 1 20) |
| ‘2’ | (ash 1 17) | ‘b’ | (ash 1 21) |
| ‘3’ | (ash 1 18) | ‘n’ | (ash 1 22) |
| ‘4’ | (ash 1 19) | ‘c’ | (ash 1 23) |
Принимая синтаксический дескриптор desc (строку), эта функция возвращает соответствующий сырой синтаксический дескриптор.
Принимая сырой синтаксический дескриптор syntax (целое число), эта функция возвращает соответствующий синтаксический дескриптор (символ).
Эта функция возвращает сырой синтаксический дескриптор для символа в
буфере после позиции pos, учитывая синтаксические свойства, а также
таблицу синтаксиса. Если pos находится за пределами
доступной части буфера (см. доступная часть),
возвращаемое значение равно nil.
Эта функция возвращает код синтаксиса для сырого синтаксического дескриптора syntax. Точнее, она извлекает компонент syntax-code сырого синтаксического дескриптора, маскирует старшие 16 бит, которые хранят флаги синтаксиса, и возвращает полученное целое число.
Если syntax равно nil, возвращаемое значение равно nil. Это
так, чтобы выражение
(syntax-class (syntax-after pos))
оценивалось как nil, если pos находится за пределами
доступной части буфера, без выдачи ошибок или возврата некорректного
кода.