elisp: Parsing Expressions
34.6 Parsing Expressions
========================
This section describes functions for parsing and scanning balanced
expressions. We will refer to such expressions as “sexps”, following
the terminology of Lisp, even though these functions can act on
languages other than Lisp. Basically, a sexp is either a balanced
parenthetical grouping, a string, or a symbol (i.e., a sequence of
characters whose syntax is either word constituent or symbol
constituent). However, characters in the expression prefix syntax class
(Syntax Class Table) 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. 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.
Menu