summaryrefslogtreecommitdiff
path: root/lispref/syntax.texi
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2002-06-21 10:01:58 +0000
committerRichard M. Stallman <rms@gnu.org>2002-06-21 10:01:58 +0000
commit32f26e6d7fc0ae2e174a29aac11d28de6a7c5136 (patch)
treec2b08c2ca9208b812ad6eef70d0fbe97eeee487a /lispref/syntax.texi
parent54cbe28cd1f79962c0af68a7d70bf34ed7a85030 (diff)
downloademacs-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.texi46
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