annotate etc/ETAGS.EBNF @ 3062:21d92abaac3a

[xemacs-hg @ 2005-11-13 10:39:28 by ben] fix up clean targets to delete .elc's as necessary dynodump/Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. *-noconfig targets are like the base targets they're based off of, but don't delete Makefiles and certain other files needed to rebuild the Makefiles as necessary. Refactor things to be more consistent. Top-level `elcclean' is an alias for `realclean-noconfig' and is used by target `beta'. `realclean-noconfig' (and, by extension, `realclean' and `extraclean') remove the .elc files. Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Makefile: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. common/Makefile.common: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. Put in some magic cookies in comments so this file gets read as a make file by XEmacs.
author ben
date Sun, 13 Nov 2005 10:39:41 +0000
parents 94f848eb8e4b
children a827a51c3241
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2225
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
1 -*- indented-text -*-
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
2
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
3 This file contains two sections:
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
4
2554
94f848eb8e4b [xemacs-hg @ 2005-02-03 18:09:26 by james]
james
parents: 2325
diff changeset
5 1) An EBNF (Extended Backus-Naur Form) description of the format of
2225
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
6 the tags file created by etags.c and interpreted by etags.el;
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
7 2) A discussion of tag names and implicit tag names.
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
8
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
9 ====================== 1) EBNF tag file description =====================
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
10
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
11 Productions created from current behaviour to aid extensions
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
12 Francesco Potorti` <pot@gnu.org> 2002
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
13 ----------------
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
14
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
15 FF ::= #x0c /* tag section starter */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
16
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
17 LF ::= #x0a /* line terminator */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
18
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
19 DEL ::= #x7f /* pattern terminator */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
20
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
21 SOH ::= #x01 /* name terminator */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
22
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
23 regchar ::= [^#x0a#x0c#x7f] /* regular character */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
24
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
25 regstring ::= { regchar } /* regular string */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
26
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
27 unsint ::= [0-9] { [0-9] } /* non-negative integer */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
28
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
29
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
30
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
31 tagfile ::= { tagsection } /* a tags file */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
32
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
33 tagsection ::= FF LF ( includesec | regularsec ) LF
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
34
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
35 includesec ::= filename ",include" [ LF fileprop ]
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
36
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
37 regularsec ::= filename "," [ unsint ] [ LF fileprop ] { LF tag }
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
38
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
39 filename ::= regchar regstring /* a file name */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
40
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
41 fileprop ::= "(" regstring ")" /* an elisp alist */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
42
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
43 tag ::= directtag | patterntag
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
44
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
45 directtag ::= DEL realposition /* no pattern */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
46
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
47 patterntag ::= pattern DEL [ tagname SOH ] position
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
48
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
49 pattern ::= regstring /* a tag pattern */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
50
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
51 tagname ::= regchar regstring /* a tag name */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
52
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
53 position ::= realposition | "," /* charpos,linepos */
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
54
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
55 realposition ::= "," unsint | unsint "," | unsint "," unsint
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
56
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
57 ==================== end of EBNF tag file description ====================
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
58
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
59
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
60
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
61 ======================= 2) discussion of tag names =======================
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
62
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
63 - WHAT ARE TAG NAMES
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
64 Tag lines in a tags file are usually made from the above defined pattern
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
65 and by an optional tag name. The pattern is a string that is searched
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
66 in the source file to find the tagged line.
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
67
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
68 - WHY TAG NAMES ARE GOOD
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
69 When a user looks for a tag, Emacs first compares the tag with the tag
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
70 names contained in the tags file. If no match is found, Emacs compares
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
71 the tag with the patterns. The tag name is then the preferred way to
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
72 look for tags in the tags file, because when the tag name is present
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
73 Emacs can find a tag faster and more accurately. These tag names are
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
74 part of tag lines in the tags file, so we call them "explicit".
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
75
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
76 - WHY IMPLICIT TAG NAMES ARE EVEN BETTER
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
77 When a tag line has no name, but a name can be deduced from the pattern,
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
78 we say that the tag line has an implicit tag name. Often tag names are
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
79 redundant; this happens when the name of a tag is an easily guessable
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
80 substring of the tag pattern. We define a set of rules to decide
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
81 whether it is possible to deduce the tag name from the pattern, and make
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
82 an unnamed tag in those cases. The name deduced from the pattern of an
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
83 unnamed tag is the implicit name of that tag.
2325
9d8bfee6e672 [xemacs-hg @ 2004-10-07 14:51:11 by james]
james
parents: 2225
diff changeset
84 When the user looks for a tag, and Emacs finds no explicit tag names
2225
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
85 that match it, Emacs then looks for an tag whose implicit tag name
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
86 matches the request. etags.c uses implicit tag names when possible, in
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
87 order to reduce the size of the tags file.
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
88 An implicit tag name is deduced from the pattern by discarding the
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
89 last character if it is one of ` \f\t\n\r()=,;', then taking all the
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
90 rightmost consecutive characters in the pattern which are not one of
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
91 those.
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
92
4968c73cb252 [xemacs-hg @ 2004-08-20 04:40:08 by james]
james
parents:
diff changeset
93 ===================== end of discussion of tag names =====================