diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-06-21 10:01:58 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-06-21 10:01:58 +0000 |
commit | 32f26e6d7fc0ae2e174a29aac11d28de6a7c5136 (patch) | |
tree | c2b08c2ca9208b812ad6eef70d0fbe97eeee487a /lispref/syntax.texi | |
parent | 54cbe28cd1f79962c0af68a7d70bf34ed7a85030 (diff) | |
download | emacs-32f26e6d7fc0ae2e174a29aac11d28de6a7c5136.tar.gz |
(Parsing Expressions): Give definition of sexp in terms of syntax classes.
Clarify other text in same node.
Diffstat (limited to 'lispref/syntax.texi')
-rw-r--r-- | lispref/syntax.texi | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/lispref/syntax.texi b/lispref/syntax.texi index bc3ac9c36bb..0d7c1cd0364 100644 --- a/lispref/syntax.texi +++ b/lispref/syntax.texi @@ -594,35 +594,39 @@ expression prefix syntax class, and characters with the @samp{p} flag. @section Parsing Balanced Expressions Here are several functions for parsing and scanning balanced -expressions, also known as @dfn{sexps}, in which parentheses match in -pairs. 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. @xref{List Motion}, for convenient +expressions, also known as @dfn{sexps}. Basically, a sexp is either a +balanced parenthetical grouping, 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. @xref{List Motion}, for convenient higher-level functions for moving over balanced expressions. -A syntax table only describes how each character 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 characters inside the string do not have any particular -syntax to identify them as such. - -For example (note: 15 is the syntax-code of generic string delimiters): + A syntax table only describes how each character 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 characters inside the string do +not have any particular syntax to identify them as such. For example +(note that 15 is the syntax code for generic string delimiters), @example (put-text-property 1 9 'syntax-table '(15 . nil)) @end example +@noindent does not tell Emacs that the first eight chars of the current buffer -are a string, but rather that they are all string delimiters and thus -Emacs should treat them as four adjacent empty strings. - -The state of the parser is transient (i.e. not stored in the buffer for -example). Instead, every time the parser is used, it is given not just -a starting position but a starting state. If the starting state is not -specified explicitly, Emacs assumes we are at the top level of parenthesis -structure, such as the beginning of a function definition (this is the case -for @code{forward-sexp} which blindly assumes that the starting point is in -such a state.) +are a string, but rather that they are all string delimiters. As a +result, Emacs treats them as four consecutive empty string constants. + + Every time you use the parser, you specify it a starting state as +well as a starting position. If you omit the starting state, the +default is ``top level in parenthesis structure,'' as it would be at +the beginning of a function definition. (This is the case for +@code{forward-sexp}, which blindly assumes that the starting point is +in such a state.) @defun parse-partial-sexp start limit &optional target-depth stop-before state stop-comment This function parses a sexp in the current buffer starting at |