annotate doc/misc/semantic.texi @ 106534:cad98e90ecc5

* verilog-mode.el (verilog-vmm-begin-re, verilog-vmm-end-re, verilog-vmm-statement-re, verilog-ovm-statement-re, verilog-defun-level-not-generate-re, verilog-calculate-indent, verilog-leap-to-head, verilog-backward-token): Fix indenting VMM macros. Reported by Jonathan Ashbrook. * verilog-mode.el (verilog-auto-lineup, verilog-nameable-item-re): Cleanup user-visible spelling and documentation errors. One reported by Gary Delp. (verilog-submit-bug-report): Mention bug tracking and CC co-author. (verilog-read-decls): Fix AUTOWIRE with types declared in a package, bug195. Reported by Pierre-David Pfister.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 11 Dec 2009 02:31:49 +0000
parents 3b90f039f42b
children c59fc4a754cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1 \input texinfo
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
2 @setfilename ../../info/semantic
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
3 @set TITLE Semantic Manual
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
4 @set AUTHOR Eric M. Ludlam and David Ponce
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
5 @settitle @value{TITLE}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
6
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
7 @c *************************************************************************
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
8 @c @ Header
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
9 @c *************************************************************************
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
10
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
11 @c Merge all indexes into a single index for now.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
12 @c We can always separate them later into two or more as needed.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
13 @syncodeindex vr cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
14 @syncodeindex fn cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
15 @syncodeindex ky cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
16 @syncodeindex pg cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
17 @syncodeindex tp cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
18
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
19 @c @footnotestyle separate
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
20 @c @paragraphindent 2
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
21 @c @@smallbook
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
22 @c %**end of header
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
23
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
24 @copying
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
25 This manual documents the Semantic library and utilities.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
26
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
27 Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
28 2009 Free Software Foundation, Inc.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
29
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
30 @quotation
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
31 Permission is granted to copy, distribute and/or modify this document
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
32 under the terms of the GNU Free Documentation License, Version 1.3 or
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
33 any later version published by the Free Software Foundation; with no
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
34 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
35 and with the Back-Cover Texts as in (a) below. A copy of the license
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
36 is included in the section entitled ``GNU Free Documentation License.''
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
37
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
38 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
39 modify this GNU manual. Buying copies from the FSF supports it in
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
40 developing GNU and promoting software freedom.''
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
41 @end quotation
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
42 @end copying
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
43
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
44 @ifinfo
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
45 @format
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
46 START-INFO-DIR-ENTRY
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
47 * Semantic: (semantic). Source code parser library and utilities.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
48 END-INFO-DIR-ENTRY
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
49 @end format
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
50 @end ifinfo
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
51
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
52 @titlepage
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
53 @center @titlefont{Semantic}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
54 @sp 4
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
55 @center by @value{AUTHOR}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
56 @end titlepage
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
57 @page
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
58
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
59 @macro semantic{}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
60 @i{Semantic}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
61 @end macro
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
62
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
63 @macro keyword{kw}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
64 @anchor{\kw\}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
65 @b{\kw\}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
66 @end macro
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
67
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
68 @macro obsolete{old,new}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
69 @sp 1
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
70 @strong{Compatibility}:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
71 @code{\new\} introduced in @semantic{} version 2.0 supercedes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
72 @code{\old\} which is now obsolete.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
73 @end macro
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
74
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
75 @c *************************************************************************
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
76 @c @ Document
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
77 @c *************************************************************************
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
78 @contents
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
79
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
80 @node top
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
81 @top @value{TITLE}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
82
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
83 @semantic{} is a suite of Emacs libraries and utilities for parsing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
84 source code. At its core is a lexical analyzer and two parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
85 generators (@code{bovinator} and @code{wisent}) written in Emacs Lisp.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
86 @semantic{} provides a variety of tools for making use of the parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
87 output, including user commands for code navigation and completion, as
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
88 well as enhancements for imenu, speedbar, whichfunc, eldoc,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
89 hippie-expand, and several other parts of Emacs.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
90
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
91 To send bug reports, or participate in discussions about semantic,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
92 use the mailing list cedet-semantic@@sourceforge.net via the URL:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
93 @url{http://lists.sourceforge.net/lists/listinfo/cedet-semantic}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
94
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
95 @ifnottex
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
96 @insertcopying
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
97 @end ifnottex
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
98
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
99 @menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
100 * Introduction::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
101 * Using Semantic::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
102 * Semantic Internals::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
103 * Glossary::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
104 * GNU Free Documentation License::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
105 * Index::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
106 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
107
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
108 @node Introduction
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
109 @chapter Introduction
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
110
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
111 This chapter gives an overview of @semantic{} and its goals.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
112
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
113 Ordinarily, Emacs uses regular expressions (and syntax tables) to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
114 analyze source code for purposes such as syntax highlighting. This
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
115 approach, though simple and efficient, has its limitations: roughly
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
116 speaking, it only ``guesses'' the meaning of each piece of source code
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
117 in the context of the programming language, instead of rigorously
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
118 ``understanding'' it.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
119
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
120 @semantic{} provides a new infrastructure to analyze source code using
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
121 @dfn{parsers} instead of regular expressions. It contains two
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
122 built-in parser generators (an @acronym{LL} generator named
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
123 @code{Bovine} and an @acronym{LALR} generator named @code{Wisent},
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
124 both written in Emacs Lisp), and parsers for several common
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
125 programming languages. It can also make use of @dfn{external
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
126 parsers}---programs such as GNU Global and GNU IDUtils.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
127
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
128 @semantic{} provides a uniform, language-independent @acronym{API} for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
129 accessing the parser output. This output can be used by other Emacs
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
130 Lisp programs to implement ``syntax-aware'' behavior. @semantic{}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
131 itself includes several such utilities, including user-level Emacs
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
132 commands for navigating, searching, and completing source code.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
133
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
134 The following diagram illustrates the structure of the @semantic{}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
135 package:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
136
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
137 @table @strong
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
138 @item Please Note:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
139 The words in all-capital are those that @semantic{} itself provides.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
140 Others are current or future languages or applications that are not
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
141 distributed along with @semantic{}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
142 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
143
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
144 @example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
145 Applications
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
146 and
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
147 Utilities
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
148 -------
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
149 / \
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
150 +---------------+ +--------+ +--------+
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
151 C --->| C PARSER |--->| | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
152 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
153 +---------------+ | COMMON | | COMMON |<--- SPEEDBAR
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
154 Java --->| JAVA PARSER |--->| PARSE | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
155 +---------------+ | TREE | | PARSE |<--- SEMANTICDB
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
156 +---------------+ | FORMAT | | API |<--- ecb
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
157 Scheme --->| SCHEME PARSER |--->| | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
158 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
159 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
160 Texinfo --->| TEXI. PARSER |--->| | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
161 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
162
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
163 ... ... ... ...
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
164
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
165 +---------------+ | | | |<--- app. 1
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
166 Lang. A --->| A Parser |--->| | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
167 +---------------+ | | | |<--- app. 2
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
168 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
169 Lang. B --->| B Parser |--->| | | |<--- app. 3
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
170 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
171
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
172 ... ... ... ... ...
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
173
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
174 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
175 Lang. Y --->| Y Parser |--->| | | |<--- app. ?
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
176 +---------------+ | | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
177 +---------------+ | | | |<--- app. ?
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
178 Lang. Z --->| Z Parser |--->| | | |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
179 +---------------+ +--------+ +--------+
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
180 @end example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
181
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
182 @menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
183 * Semantic Components::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
184 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
185
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
186 @node Semantic Components
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
187 @section Semantic Components
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
188
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
189 In this section, we provide a more detailed description of the major
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
190 components of @semantic{}, and how they interact with one another.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
191
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
192 The first step in parsing a source code file is to break it up into
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
193 its fundamental components. This step is called lexical analysis:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
194
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
195 @example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
196 syntax table, keywords list, and options
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
197 |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
198 |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
199 v
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
200 input file ----> Lexer ----> token stream
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
201 @end example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
202
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
203 @noindent
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
204 The output of the lexical analyzer is a list of tokens that make up
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
205 the file. The next step is the actual parsing, shown below:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
206
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
207 @example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
208 parser tables
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
209 |
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
210 v
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
211 token stream ---> Parser ----> parse tree
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
212 @end example
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
213
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
214 @noindent
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
215 The end result, the parse tree, is @semantic{}'s internal
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
216 representation of the language grammar. @semantic{} provides an
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
217 @acronym{API} for Emacs Lisp programs to access the parse tree.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
218
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
219 Parsing large files can take several seconds or more. By default,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
220 @semantic{} automatically caches parse trees by saving them in your
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
221 @file{.emacs.d} directory. When you revisit a previously-parsed file,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
222 the parse tree is automatically reloaded from this cache, to save
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
223 time. @xref{SemanticDB}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
224
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
225 @node Using Semantic
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
226 @chapter Using Semantic
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
227
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
228 @include sem-user.texi
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
229
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
230 @node Semantic Internals
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
231 @chapter Semantic Internals
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
232
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
233 This chapter provides an overview of the internals of @semantic{}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
234 This information would not be needed by neither application developers
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
235 nor grammar developers.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
236
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
237 It would be useful mostly for the hackers who would like to learn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
238 more about how @semantic{} works.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
239
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
240 @menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
241 * Parser code :: Code used for the parsers
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
242 * Tag handling :: Code used for manipulating tags
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
243 * Semanticdb Internals :: Code used in the semantic database
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
244 * Analyzer Internals :: Code used in the code analyzer
106076
e142b685cd90 * semantic.texi (Semantic Internals, Glossary):
Juanma Barranquero <lekktu@gmail.com>
parents: 106061
diff changeset
245 * Tools :: Code used in user tools
e142b685cd90 * semantic.texi (Semantic Internals, Glossary):
Juanma Barranquero <lekktu@gmail.com>
parents: 106061
diff changeset
246 * Tests :: Code used for testing
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
247 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
248
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
249 @node Parser code
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
250 @section Parser code
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
251
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
252 @semantic{} parsing code is spread across a range of files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
253
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
254 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
255 @item semantic.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
256 The core infrastructure sets up buffers for parsing, and has all the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
257 core parsing routines. Most parsing routines are overloadable, so the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
258 actual implementation may be somewhere else.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
259
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
260 @item semantic-edit.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
261 Incremental reparse based on user edits.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
262
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
263 @item semantic-grammar.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
264 @itemx semantic-grammar.wy
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
265 Parser for the different grammar languages, and a major mode for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
266 editing grammars in Emacs.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
267
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
268 @item semantic-lex.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
269 Infrastructure for implementing lexical analyzers. Provides macros
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
270 for creating individual analyzers for specific features, and a way to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
271 combine them together.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
272
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
273 @item semantic-lex-spp.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
274 Infrastructure for a lexical symbolic preprocessor. This was written
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
275 to implement the C preprocessor, but could be used for other lexical
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
276 preprocessors.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
277
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
278 @item bovine/bovine-grammar.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
279 @itemx bovine/bovine-grammar-macros.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
280 @itemx bovine/semantic-bovine.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
281 The ``bovine'' grammar. This is the first grammar mode written for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
282 @semantic{} and is useful for simple creating simple parsers.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
283
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
284 @item wisent/wisent.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
285 @itemx wisent/bison-wisent.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
286 @itemx wisent/semantic-wisent.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
287 @itemx wisent/semantic-debug-grammar.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
288 A port of bison to Emacs. This infrastructure lets you create LALR
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
289 based parsers for @semantic{}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
290
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
291 @item semantic-ast.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
292 Manage Abstract Syntax Trees for parsers.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
293
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
294 @item semantic-debug.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
295 Infrastructure for debugging grammars.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
296
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
297 @item semantic-util.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
298 Various utilities for manipulating tags, such as describing the tag
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
299 under point, adding labels, and the all important
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
300 @code{semantic-something-to-tag-table}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
301
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
302 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
303
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
304 @node Tag handling
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
305 @section Tag handling
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
306
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
307 A tag represents an individual item found in a buffer, such as a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
308 function or variable. Tag handling is handled in several source
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
309 files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
310
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
311 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
312 @item semantic-tag.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
313 Basic tag creation, queries, cloning, binding, and unbinding.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
314
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
315 @item semantic-tag-write.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
316 Write a tag or tag list to a stream. These routines are used by
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
317 @file{semanticdb-file.el} when saving a list of tags.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
318
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
319 @item semantic-tag-file.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
320 Files associated with tags. Goto-tag, file for include, and file for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
321 a prototype.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
322
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
323 @item semantic-tag-ls.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
324 Language dependant features of a tag, such as parent calculation, slot
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
325 protection, and other states like abstract, virtual, static, and leaf.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
326
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
327 @item semantic-dep.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
328 Include file handling. Contains the include path concepts, and
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
329 routines for looking up file names in the include path.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
330
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
331 @item semantic-format.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
332 Convert a tag into a nicely formatted and colored string. Use
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
333 @code{semantic-test-all-format-tag-functions} to test different output
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
334 options.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
335
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
336 @item semantic-find.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
337 Find tags matching different conditions in a tag table.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
338 These routines are used by @file{semanticdb-find.el} once the database
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
339 has been converted into a simpler tag table.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
340
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
341 @item semantic-sort.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
342 Sorting lists of tags in different ways. Includes sorting a plain
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
343 list of tags forward or backward. Includes binning tags based on
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
344 attributes (bucketize), and tag adoption for multiple references to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
345 the same thing.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
346
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
347 @item semantic-doc.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
348 Capture documentation comments from near a tag.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
349
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
350 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
351
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
352 @node Semanticdb Internals
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
353 @section Semanticdb Internals
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
354
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
355 @acronym{Semanticdb} complexity is certainly an issue. It is a rather
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
356 hairy problem to try and solve.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
357
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
358 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
359 @item semanticdb.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
360 Defines a @dfn{database} and a @dfn{table} base class. You can
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
361 instantiate these classes, and use them, but they are not persistent.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
362
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
363 This file also provides support for @code{semanticdb-minor-mode},
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
364 which automatically associates files with tables in databases so that
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
365 tags are @emph{saved} while a buffer is not in memory.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
366
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
367 The database and tables both also provide applicate cache information,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
368 and cache flushing system. The semanticdb search routines use caches
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
369 to save datastructures that are complex to calculate.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
370
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
371 Lastly, it provides the concept of @dfn{project root}. It is a system
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
372 by which a file can be associated with the root of a project, so if
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
373 you have a tree of directories and source files, it can find the root,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
374 and allow a tag-search to span all available databases in that
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
375 directory hierarchy.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
376
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
377 @item semanticdb-file.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
378 Provides a subclass of the basic table so that it can be saved to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
379 disk. Implements all the code needed to unbind/rebind tags to a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
380 buffer and writing them to a file.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
381
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
382 @item semanticdb-el.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
383 Implements a special kind of @dfn{system} database that uses Emacs
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
384 internals to perform queries.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
385
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
386 @item semanticdb-ebrowse.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
387 Implements a system database that uses Ebrowse to parse files into a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
388 table that can be queried for tag names. Successful tag hits during a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
389 find causes @semantic{} to pick up and parse the reference files to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
390 get the full details.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
391
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
392 @item semanticdb-find.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
393 Infrastructure for searching groups @semantic{} databases, and dealing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
394 with the search results format.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
395
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
396 @item semanticdb-ref.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
397 Tracks crossreferences. Cross references are needed when buffer is
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
398 reparsed, and must alert other tables that any dependant caches may
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
399 need to be flushed. References are in the form of include files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
400
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
401 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
402
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
403 @node Analyzer Internals
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106076
diff changeset
404 @section Analyzer Internals
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
405
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
406 The @semantic{} analyzer is a complex engine which has been broken
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
407 down across several modules. When the @semantic{} analyzer fails,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
408 start with @code{semantic-analyze-debug-assist}, then dive into some
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
409 of these files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
410
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
411 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
412 @item semantic-analyze.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
413 The core analyzer for defining the @dfn{current context}. The
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
414 current context is an object that contains references to aspects of
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
415 the local context including the current prefix, and a tag list
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
416 defining what the prefix means.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
417
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
418 @item semantic-analyze-complete.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
419 Provides @code{semantic-analyze-possible-completions}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
420
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
421 @item semantic-analyze-debug.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
422 The analyzer debugger. Useful when attempting to get everything
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
423 configured.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
424
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
425 @item semantic-analyze-fcn.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
426 Various support functions needed by the analyzer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
427
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
428 @item semantic-ctxt.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
429 Local context parser. Contains overloadable functions used to move
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
430 around through different scopes, get local variables, and collect the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
431 current prefix used when doing completion.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
432
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
433 @item semantic-scope.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
434 Calculate @dfn{scope} for a location in a buffer. The scope includes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
435 local variables, and tag lists in scope for various reasons, such as
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
436 C++ using statements.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
437
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
438 @item semanticdb-typecache.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
439 The typecache is part of @code{semanticdb}, but is used primarilly by
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
440 the analyzer to look up datatypes and complex names. The typecache is
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
441 bound across source files and builds a master lookup table for data
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
442 type names.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
443
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
444 @item semantic-ia.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
445 Interactive Analyzer functions. Simple routines that do completion or
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
446 lookups based on the results from the Analyzer. These routines are
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
447 meant as examples for application writers, but are quite useful as
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
448 they are.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
449
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
450 @item semantic-ia-sb.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
451 Speedbar support for the analyzer, displaying context info, and
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
452 completion lists.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
453
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
454 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
455
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
456 @node Tools
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
457 @section Tools
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
458
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
459 These files contain various tools a user can use.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
460
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
461 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
462 @item semantic-idle.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
463 Idle scheduler for @semantic{}. Manages reparsing buffers after
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
464 edits, and large work tasks in idle time. Includes modes for showing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
465 summary help and pop-up completion.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
466
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
467 @item senator.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
468 The @semantic{} navigator. Provides many ways to move through a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
469 buffer based on the active tag table.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
470
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
471 @item semantic-decorate.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
472 A minor mode for decorating tags based on details from the parser.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
473 Includes overlines for functions, or coloring class fields based on
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
474 protection.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
475
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
476 @item semantic-decorate-include.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
477 A decoration mode for include files, which assists users in setting up
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
478 parsing for their includes.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
479
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
480 @item semantic-complete.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
481 Advanced completion prompts for reading tag names in the minibuffer, or
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
482 inline in a buffer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
483
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
484 @item semantic-imenu.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
485 Imenu support for using @semantic{} tags in imenu.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
486
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
487 @item semantic-mru-bookmark.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
488 Automatic bookmarking based on tags. Jump to locations you've been
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
489 before based on tag name.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
490
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
491 @item semantic-sb.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
492 Support for @semantic{} tag usage in Speedbar.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
493
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
494 @item semantic-util-modes.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
495 A bunch of small minor-modes that exposes aspects of the semantic
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
496 parser state. Includes @code{semantic-stickyfunc-mode}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
497
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
498 @item document.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
499 @itemx document-vars.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
500 Create an update comments for tags.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
501
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
502 @item semantic-adebug.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
503 Extensions of @file{data-debug.el} for @semantic{}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
504
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
505 @item semantic-chart.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
506 Draw some charts from stats generated from parsing.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
507
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
508
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
509 @item semantic-elp.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
510 Profiler for helping to optimize the @semantic{} analyzer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
511
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
512
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
513 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
514
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
515 @node Tests
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
516 @section Tests
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
517
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
518 @table @file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
519
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
520 @item semantic-utest.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
521 Basic testing of parsing and incremental parsing for most supported
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
522 languages.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
523
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
524 @item semantic-ia-utest.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
525 Test the semantic analyzer's ability to provide smart completions.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
526
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
527 @item semantic-utest-c.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
528 Tests for the C parser's lexical pre-processor.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
529
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
530 @item semantic-regtest.el
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
531 Regression tests from the older Semantic 1.x API.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
532
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
533 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
534
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
535 @node Glossary
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
536 @appendix Glossary
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
537
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
538 @table @keyword
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
539 @item BNF
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
540 In semantic 1.4, a BNF file represented ``Bovine Normal Form'', the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
541 grammar file used for the 1.4 parser generator. This was a play on
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
542 Backus-Naur Form which proved too confusing.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
543
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
544 @item bovinate
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
545 A verb representing what happens when a bovine parser parses a file.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
546
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
547 @item bovine lambda
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
548 In a bovine, or LL parser, the bovine lambda is a function to execute
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
549 when a specific set of match rules has succeeded in matching text from
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
550 the buffer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
551
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
552 @item bovine parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
553 A parser using the bovine parser generator. It is an LL parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
554 suitible for small simple languages.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
555
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
556 @item context
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
557
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
558 @item LALR
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
559
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
560 @item lexer
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
561 A program which converts text into a stream of tokens by analyzing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
562 them lexically. Lexers will commonly create strings, symbols,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
563 keywords and punctuation, and strip whitespaces and comments.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
564
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
565 @item LL
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
566
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
567 @item nonterminal
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
568 A nonterminal symbol or simply a nonterminal stands for a class of
106076
e142b685cd90 * semantic.texi (Semantic Internals, Glossary):
Juanma Barranquero <lekktu@gmail.com>
parents: 106061
diff changeset
569 syntactically equivalent groupings. A nonterminal symbol name is used
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
570 in writing grammar rules.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
571
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
572 @item overloadable
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
573 Some functions are defined via @code{define-overload}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
574 These can be overloaded via ....
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
575
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
576 @item parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
577 A program that converts @b{tokens} to @b{tags}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
578
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
579 @item tag
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
580 A tag is a representation of some entity in a language file, such as a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
581 function, variable, or include statement. In semantic, the word tag is
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
582 used the same way it is used for the etags or ctags tools.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
583
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
584 A tag is usually bound to a buffer region via overlay, or it just
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
585 specifies character locations in a file.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
586
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
587 @item token
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
588 A single atomic item returned from a lexer. It represents some set
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
589 of characters found in a buffer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
590
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
591 @item token stream
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
592 The output of the lexer as well as the input to the parser.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
593
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
594 @item wisent parser
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
595 A parser using the wisent parser generator. It is a port of bison to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
596 Emacs Lisp. It is an LALR parser suitable for complex languages.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
597 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
598
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
599
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
600 @node GNU Free Documentation License
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
601 @appendix GNU Free Documentation License
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
602 @include doclicense.texi
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
603
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
604 @node Index
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
605 @unnumbered Index
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
606 @printindex cp
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
607
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
608 @iftex
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
609 @contents
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
610 @summarycontents
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
611 @end iftex
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
612
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
613 @bye
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
614
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
615 @c Following comments are for the benefit of ispell.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
616
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
617 @c LocalWords: alist API APIs arg argc args argv asis assoc autoload Wisent
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
618 @c LocalWords: backquote bnf bovinate bovinates LALR
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
619 @c LocalWords: bovinating bovination bovinator bucketize
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
620 @c LocalWords: cb cdr charquote checkcache cindex CLOS
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
621 @c LocalWords: concat concocting const constantness ctxt Decl defcustom
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
622 @c LocalWords: deffn deffnx defun defvar destructor's dfn diff dir
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
623 @c LocalWords: doc docstring EDE EIEIO elisp emacsman emph enum
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
624 @c LocalWords: eq Exp EXPANDFULL expresssion fn foo func funcall
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
625 @c LocalWords: ia ids iff ifinfo imenu imenus init int isearch itemx java kbd
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
626 @c LocalWords: keymap keywordtable lang languagemode lexer lexing Ludlam
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
627 @c LocalWords: menubar metaparent metaparents min minibuffer Misc mode's
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
628 @c LocalWords: multitable NAvigaTOR noindent nomedian nonterm noselect
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
629 @c LocalWords: nosnarf obarray OLE OO outputfile paren parsetable POINT's
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
630 @c LocalWords: popup positionalonly positiononly positionormarker pre
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
631 @c LocalWords: printf printindex Programmatically pt punctuations quotemode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
632 @c LocalWords: ref regex regexp Regexps reparse resetfile samp sb
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
633 @c LocalWords: scopestart SEmantic semanticdb setfilename setq
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
634 @c LocalWords: settitle setupfunction sexp sp SPC speedbar speedbar's
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
635 @c LocalWords: streamorbuffer struct subalist submenu submenus
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
636 @c LocalWords: subsubsection sw sym texi texinfo titlefont titlepage
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
637 @c LocalWords: tok TOKEN's toplevel typemodifiers uml unset untar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
638 @c LocalWords: uref usedb var vskip xref yak
106352
3b90f039f42b Add arch tagline
Miles Bader <miles@gnu.org>
parents: 106305
diff changeset
639
3b90f039f42b Add arch tagline
Miles Bader <miles@gnu.org>
parents: 106305
diff changeset
640 @ignore
3b90f039f42b Add arch tagline
Miles Bader <miles@gnu.org>
parents: 106305
diff changeset
641 arch-tag: cbc6e78c-4ff1-410e-9fc7-936487e39bbf
3b90f039f42b Add arch tagline
Miles Bader <miles@gnu.org>
parents: 106305
diff changeset
642 @end ignore