\input texinfo
@setfilename ../../info/semantic
@set TITLE Semantic Manual
-@set AUTHOR Eric M. Ludlam and David Ponce
+@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
@settitle @value{TITLE}
@c *************************************************************************
@copying
This manual documents the Semantic library and utilities.
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-2009 Free Software Foundation, Inc.
+Copyright @copyright{} 1999--2005, 2007, 2009--2013 Free Software
+Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
is included in the section entitled ``GNU Free Documentation License.''
(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
-modify this GNU manual. Buying copies from the FSF supports it in
-developing GNU and promoting software freedom.''
+modify this GNU manual.''
@end quotation
@end copying
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Semantic: (semantic). Source code parser library and utilities.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
+@dircategory Emacs misc features
+@direntry
+* Semantic: (semantic). Source code parser library and utilities.
+@end direntry
@titlepage
@center @titlefont{Semantic}
@macro obsolete{old,new}
@sp 1
@strong{Compatibility}:
-@code{\new\} introduced in @semantic{} version 2.0 supercedes
+@code{\new\} introduced in @semantic{} version 2.0 supersedes
@code{\old\} which is now obsolete.
@end macro
+---------------+ | COMMON | | COMMON |<--- SPEEDBAR
Java --->| JAVA PARSER |--->| PARSE | | |
+---------------+ | TREE | | PARSE |<--- SEMANTICDB
- +---------------+ | FORMAT | | API |<--- ecb
- Scheme --->| SCHEME PARSER |--->| | | |
+ +---------------+ | FORMAT | | API |
+ Scheme --->| SCHEME PARSER |--->| | | |<--- ecb
+---------------+ | | | |
+---------------+ | | | |
Texinfo --->| TEXI. PARSER |--->| | | |
... ... ... ...
- +---------------+ | | | |<--- app. 1
- Lang. A --->| A Parser |--->| | | |
- +---------------+ | | | |<--- app. 2
- +---------------+ | | | |
- Lang. B --->| B Parser |--->| | | |<--- app. 3
- +---------------+ | | | |
-
- ... ... ... ... ...
-
+---------------+ | | | |
Lang. Y --->| Y Parser |--->| | | |<--- app. ?
+---------------+ | | | |
@chapter Semantic Internals
This chapter provides an overview of the internals of @semantic{}.
-This information would not be needed by neither application developers
-nor grammar developers.
-
-It would be useful mostly for the hackers who would like to learn
-more about how @semantic{} works.
+This information is usually not needed by application developers or
+grammar developers; it is useful mostly for the hackers who would like
+to learn more about how @semantic{} works.
@menu
-* Parser code :: Code used for the parsers
-* Tag handling :: Code used for manipulating tags
-* Semanticdb internals :: Code used in the semantic database
-* Analyzer :: Code used in the code analyzer
+* Parser code :: Code used for the parsers
+* Tag handling :: Code used for manipulating tags
+* Semanticdb Internals :: Code used in the semantic database
+* Analyzer Internals :: Code used in the code analyzer
* Tools :: Code used in user tools
* Tests :: Code used for testing
@end menu
a prototype.
@item semantic-tag-ls.el
-Language dependant features of a tag, such as parent calculation, slot
+Language dependent features of a tag, such as parent calculation, slot
protection, and other states like abstract, virtual, static, and leaf.
@item semantic-dep.el
@end table
-@node Semanticdb internals
-@section Semanticdb internals
+@node Semanticdb Internals
+@section Semanticdb Internals
@acronym{Semanticdb} complexity is certainly an issue. It is a rather
hairy problem to try and solve.
which automatically associates files with tables in databases so that
tags are @emph{saved} while a buffer is not in memory.
-The database and tables both also provide applicate cache information,
+The database and tables both also provide applicable cache information,
and cache flushing system. The semanticdb search routines use caches
to save datastructures that are complex to calculate.
@item semanticdb-ref.el
Tracks crossreferences. Cross references are needed when buffer is
-reparsed, and must alert other tables that any dependant caches may
+reparsed, and must alert other tables that any dependent caches may
need to be flushed. References are in the form of include files.
@end table
-@node Analyzer
-@section Analyzer
+@node Analyzer Internals
+@section Analyzer Internals
The @semantic{} analyzer is a complex engine which has been broken
down across several modules. When the @semantic{} analyzer fails,
C++ using statements.
@item semanticdb-typecache.el
-The typecache is part of @code{semanticdb}, but is used primarilly by
+The typecache is part of @code{semanticdb}, but is used primarily by
the analyzer to look up datatypes and complex names. The typecache is
bound across source files and builds a master lookup table for data
type names.
@node Glossary
@appendix Glossary
-@table @keyword
+@table @asis
@item BNF
In semantic 1.4, a BNF file represented ``Bovine Normal Form'', the
grammar file used for the 1.4 parser generator. This was a play on
@item bovine parser
A parser using the bovine parser generator. It is an LL parser
-suitible for small simple languages.
+suitable for small simple languages.
@item context
@c LocalWords: concat concocting const constantness ctxt Decl defcustom
@c LocalWords: deffn deffnx defun defvar destructor's dfn diff dir
@c LocalWords: doc docstring EDE EIEIO elisp emacsman emph enum
-@c LocalWords: eq Exp EXPANDFULL expresssion fn foo func funcall
+@c LocalWords: eq Exp EXPANDFULL expression fn foo func funcall
@c LocalWords: ia ids iff ifinfo imenu imenus init int isearch itemx java kbd
@c LocalWords: keymap keywordtable lang languagemode lexer lexing Ludlam
@c LocalWords: menubar metaparent metaparents min minibuffer Misc mode's
@c LocalWords: multitable NAvigaTOR noindent nomedian nonterm noselect
@c LocalWords: nosnarf obarray OLE OO outputfile paren parsetable POINT's
@c LocalWords: popup positionalonly positiononly positionormarker pre
-@c LocalWords: printf printindex Programmatically pt punctuations quotemode
+@c LocalWords: printf printindex Programmatically pt quotemode
@c LocalWords: ref regex regexp Regexps reparse resetfile samp sb
@c LocalWords: scopestart SEmantic semanticdb setfilename setq
@c LocalWords: settitle setupfunction sexp sp SPC speedbar speedbar's