В этом разделе описываются функции для парсинга и сканирования сбалансированных выражений. Мы будем называть такие выражения sexps, следуя терминологии Lisp, хотя эти функции могут работать с языками, отличными от Lisp. По сути, sexp — это либо сбалансированная парная группировка, либо строка, либо символ (то есть последовательность символов, синтаксис которых является либо составной единицей слова, либо составной единицей символа). Однако символы в классе синтаксиса префикса выражения (см. Таблица классов синтаксиса) рассматриваются как часть sexp, если они следуют за ним.
Таблица синтаксиса контролирует интерпретацию символов, поэтому эти функции могут использоваться для выражений Lisp в режиме Lisp и для выражений C в режиме C. См. Перемещение по сбалансированным выражениям, для удобных функций более высокого уровня для перемещения по сбалансированным выражениям.
Синтаксис символа контролирует, как он изменяет состояние парсерa, а не описывает само состояние. Например, символ разделителя строки переключает состояние парсера между внутри строки и в коде, но синтаксис символов не говорит напрямую, находятся ли они внутри строки. Например (обратите внимание, что 15 — это код синтаксиса для общих разделителей строк),
(put-text-property 1 9 'syntax-table '(15 . nil))
не говорит Emacs, что первые восемь символов текущего буфера являются строкой, а скорее то, что все они являются разделителями строк. В результате Emacs рассматривает их как четыре последовательных пустых константы строк.