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
 (SeeSyntax 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.  SeeList 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