语法表以字符表(char-table)实现(see 字符表),但大多数 Lisp 程序不会直接操作其元素。 语法表并不以语法描述符存储语法数据(see 语法描述符),而是使用本节说明的内部格式。该内部格式也可作为语法属性赋值(see 语法属性)。
语法表中的每个条目都是一个原始语法描述符(raw syntax descriptor):格式为 (syntax-code . matching-char) 的 cons 单元。
syntax-code 是一个整数,根据下表编码语法分类与语法标记。matching-char 非 nil 时指定匹配字符(与语法描述符中的第二个字符作用类似)。
使用 aref(see 操作数组的函数)获取字符的原始语法描述符,例如 (aref (syntax-table) ch)。
以下为各语法分类对应的语法代码:
| 代码 | 分类 | 代码 | 分类 |
| 0 | 空白字符 | 8 | 配对定界符 |
| 1 | 标点符号 | 9 | 转义符 |
| 2 | 单词构成字符 | 10 | 字符引用符 |
| 3 | 符号构成字符 | 11 | 注释开始符 |
| 4 | 左括号 | 12 | 注释结束符 |
| 5 | 右括号 | 13 | 继承 |
| 6 | 表达式前缀符 | 14 | 通用注释符 |
| 7 | 字符串引号 | 15 | 通用字符串符 |
例如,标准语法表中 ‘(’ 对应的条目为 (4 . 41),其中 41 是字符 ‘)’ 的编码。
语法标记编码在高位比特位,从最低位开始第 16 位起。下表给出各语法标记对应的 2 的幂次值。
| 标记 | 对应值 | 标记 | 对应值 |
| ‘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 位于缓冲区可访问区域之外(see accessible portion),返回值为 nil。
该函数返回原始语法描述符 syntax 对应的语法代码。更精确地说,它提取原始语法描述符的 syntax-code 部分,屏蔽掉记录语法标记的高 16 位后返回结果整数。
若 syntax 为 nil,返回值为 nil。因此表达式
(syntax-class (syntax-after pos))
在 pos 超出缓冲区可访问区域时会返回 nil,不会抛出错误或返回无效代码。