This section describes functions for parsing and scanning balanced expressions, also known as sexps. Basically, a sexp is either a balanced parenthetical grouping, a string, or a symbol name (a sequence of characters whose syntax is either word constituent or symbol constituent). However, characters whose syntax is expression prefix are treated as part of the sexp if they appear next to it.
The syntax table controls the interpretation of characters, so these functions can be used for Lisp expressions when in Lisp mode and for C expressions when in C mode. See List Motion, for convenient higher-level functions for moving over balanced expressions.
A character's syntax controls how it changes the state of the parser, rather than describing the state itself. For example, a string delimiter character toggles the parser state between “in-string” and “in-code,” but the syntax of characters does not directly say whether they are inside a string. For example (note that 15 is the syntax code for generic string delimiters),
(put-text-property 1 9 'syntax-table '(15 . nil))
does not tell Emacs that the first eight chars of the current buffer are a string, but rather that they are all string delimiters. As a result, Emacs treats them as four consecutive empty string constants.blog comments powered by Disqus