/[emacs]/emacs/etc/ETAGS.EBNF
ViewVC logotype

Diff of /emacs/etc/ETAGS.EBNF

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by pot, Tue Mar 12 14:17:25 2002 UTC revision 1.3.2.1 by miles, Fri Apr 4 06:19:49 2003 UTC
# Line 1  Line 1 
1  EBNF (Extended Backus Normal Form) description of the format of the tags  -*- indented-text -*-
2  file created by etags.c and interpreted by etags.el  
3    This file contains two sections:
4    
5    1) An EBNF (Extended Backus Normal Form) description of the format of
6        the tags file created by etags.c and interpreted by etags.el;
7    2) A discussion of tag names and implicit tag names.
8    
9    ====================== 1) EBNF tag file description =====================
10    
11    Productions created from current behaviour to aid extensions
12  Francesco Potorti` <pot@gnu.org> 2002  Francesco Potorti` <pot@gnu.org> 2002
13  ================================================================  ----------------
14    
15  FF ::= #x0c                                /* form feed */  FF ::= #x0c                                /* tag section starter */
16    
17  LF ::= #x0a                                /* line feed */  LF ::= #x0a                                /* line terminator */
18    
19  DEL ::= #x7f                               /* pattern terminator */  DEL ::= #x7f                               /* pattern terminator */
20    
# Line 29  regularsec ::= filename "," [ unsint ] [ Line 38  regularsec ::= filename "," [ unsint ] [
38    
39  filename ::= regchar regstring             /* a file name */  filename ::= regchar regstring             /* a file name */
40    
41  fileprop ::= DEL "(" regstring ")"  fileprop ::= "(" regstring ")"             /* an elisp alist */
42    
43  tag ::= directtag | patterntag  tag ::= directtag | patterntag
44    
45  directtag ::= DEL realposition  directtag ::= DEL realposition             /* no pattern */
46    
47  patterntag ::= pattern DEL [ tagname SOH ] position  patterntag ::= pattern DEL [ tagname SOH ] position
48    
# Line 41  pattern ::= regstring                     /* a tag patt Line 50  pattern ::= regstring                     /* a tag patt
50    
51  tagname ::= regchar regstring              /* a tag name */  tagname ::= regchar regstring              /* a tag name */
52    
53  position ::= realposition | ","  position ::= realposition | ","            /* charpos,linepos */
54    
55  realposition ::= "," unsint | unsint "," | unsint "," unsint  realposition ::= "," unsint | unsint "," | unsint "," unsint
56    
57    ==================== end of EBNF tag file description ====================
58    
59    
60    
61    ======================= 2) discussion of tag names =======================
62    
63    - WHAT ARE TAG NAMES
64    Tag lines in a tags file are usually made from the above defined pattern
65    and by an optional tag name.  The pattern is a string that is searched
66    in the source file to find the tagged line.
67    
68    - WHY TAG NAMES ARE GOOD
69    When a user looks for a tag, Emacs first compares the tag with the tag
70    names contained in the tags file.  If no match is found, Emacs compares
71    the tag with the patterns.  The tag name is then the preferred way to
72    look for tags in the tags file, because when the tag name is present
73    Emacs can find a tag faster and more accurately.  These tag names are
74    part of tag lines in the tags file, so we call them "explicit".
75    
76    - WHY IMPLICIT TAG NAMES ARE EVEN BETTER
77    When a tag line has no name, but a name can be deduced from the pattern,
78    we say that the tag line has an implicit tag name.  Often tag names are
79    redundant; this happens when the name of a tag is an easily guessable
80    substring of the tag pattern.  We define a set of rules to decide
81    whether it is possible to deduce the tag name from the pattern, and make
82    an unnamed tag in those cases.  The name deduced from the pattern of an
83    unnamed tag is the implicit name of that tag.
84      When the user looks for a tag, and Emacs founds no explicit tag names
85    that match it, Emacs then looks for an tag whose implicit tag name
86    matches the request.  etags.c uses implicit tag names when possible, in
87    order to reduce the size of the tags file.
88      An implicit tag name is deduced from the pattern by discarding the
89    last character if it is one of ` \f\t\n\r()=,;', then taking all the
90    rightmost consecutive characters in the pattern which are not one of
91    those.
92    
93    ===================== end of discussion of tag names =====================

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.3.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26