summaryrefslogtreecommitdiff
path: root/etc/ETAGS.EBNF
diff options
context:
space:
mode:
authorFrancesco Potortì <pot@gnu.org>2002-06-21 12:05:52 +0000
committerFrancesco Potortì <pot@gnu.org>2002-06-21 12:05:52 +0000
commiteb39785f5c94054671dd301f650e213dd0ce6122 (patch)
tree74936e03ef861f1346b8630bbb6abc35ffc29c85 /etc/ETAGS.EBNF
parent30a2aafd0cb8cef0137f07aec7ff5666ebe3fe8b (diff)
downloademacs-eb39785f5c94054671dd301f650e213dd0ce6122.tar.gz
Added discussion on tag names.
Diffstat (limited to 'etc/ETAGS.EBNF')
-rw-r--r--etc/ETAGS.EBNF49
1 files changed, 46 insertions, 3 deletions
diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF
index e548a11cbdd..7063fd8b57d 100644
--- a/etc/ETAGS.EBNF
+++ b/etc/ETAGS.EBNF
@@ -1,9 +1,14 @@
-EBNF (Extended Backus Normal Form) description of the format of the tags
-file created by etags.c and interpreted by etags.el
+This file contains two sections:
+
+1) An EBNF (Extended Backus Normal Form) description of the format of
+ the tags file created by etags.c and interpreted by etags.el
+2) A discussion of tag names and implicit tag names
+
+======================= EBNF tag file description =======================
Productions created from current behaviour to aid extensions
Francesco Potorti` <pot@gnu.org> 2002
-================================================================
+----------------
FF ::= #x0c /* tag section starter */
@@ -46,3 +51,41 @@ tagname ::= regchar regstring /* a tag name */
position ::= realposition | "," /* charpos,linepos */
realposition ::= "," unsint | unsint "," | unsint "," unsint
+
+==================== end of EBNF tag file description ====================
+
+
+
+======================== discussion on tag names =========================
+
+- What are tag names
+Tag lines in a tags file are usually made from the above defined pattern
+and by an optional tag name. The pattern is a string that is searched
+in the source file to find the tagged line.
+
+- Why tag names are good
+When a user looks for a tag, Emacs first compares the tag with the tag
+names contained in the tags file. If no match is found, Emacs compares
+the tag with the patterns. The tag name is then the preferred way to
+look for tags in the tags file, because when the tag name is present
+Emacs can find a tag faster and more accurately. These tag names are
+part of tag lines in the tags file, so we call them "explicit".
+
+- Why implicit tag names are even better
+The purpose of implicit tag names is to reduce the number of tag names
+in a tags file, thus reducing the size of the tags file. When the user
+looks for a tag, and Emacs founds no explicit tag names that match it,
+Emacs then tries to match the tag with an implicit tag name. Such a
+match occurs when the tag matches a pattern, subject to the satisfaction
+of all the following four rules:
+
+ NONAM=" \f\t\n\r()=,;";
+ 1. the tag does not contain any of the characters in NONAM;
+ 2. the pattern contains the tag as either a rightmost, or rightmost
+ but one character, substring;
+ 3. the character, if any, immediately before the tag in the pattern
+ must be a character in NONAM;
+ 4. the character, if any, immediately after the tag in the pattern
+ must also be a character in NONAM.
+
+===================== end of discussion on tag names =====================