CEDET 
 User Tools 
  Simple Setup 
  Project Management 
  Smart Completion 
  Find References 
  Code Generation 
  UML Graphs 
  Language Support 
 Developer Primers 
  Add a Language 
  Add external tool 
 Parts of CEDET 
  EDE 
  Semantic 
  SRecode 
  Cogre 
  Speedbar 
  EIEIO 
  Misc Tools 
 Releases 
  1.0pre6 
  1.0pre4 
 Source Forge 
  Project 
  Mailing Lists 
   cedet-devel 
   cedet-semantic 
   cedet-eieio 
  Screenshots 
  Donate 
 More Tools 
  JDEE 
  ECB 
  CompletionUI 
 
<< Files >>

Semantic:

"Infrastructure for parser based text analysis in Emacs."
Logo by David Ponce

Semantic is an infrastructure for parser based text analysis in Emacs. It is a lexer, parser-generator, and parser. It is written in Emacs Lisp and is customized to the way Emacs thinks about language files, and is optimized to use Emacs' parsing capabilities.

Semantic's goal is to provide an intermediate API for authors of language agnostic tools who want to deal with languages in a generic way. It also provides a simple way for Mode Authors who are expert's in their language, to provide a parser for those tool authors, without knowing anything about those tools.

Semantic's Parser Infrastructure:

Lexical Analyzer & Preprocessor
Converts a language into a token stream. Preprocessor support with lexical macro replacement (C/C++).
Parser
Converts a lexical token stream into a table of tags defined by the language.
Parser Generator with Bison
David Ponce has ported Bison to Emacs Lisp. New languages can be supported via the wisent parser.
Language Parsers
Parsers that have already been implemented:
Emacs Lisp, Java, C/C++, C#, Python, Erlang, awk, Makefile, Scheme, HTML, Texinfo, Javascript, dot.
Also: Semantic's own grammar format (.by or .wy)
Database
Persistent storage of parsed information. Speeds load time and provides standard way of cross referencing files. The database backend supports alternate parsers and file formats.
Incremental parser
Reparses minimal parts of a buffer as you edit.
Idle service manager
Reparses buffers in idle time, and also call other services.

Codinig Tools


semantic-chart.png
Complexity of semantic.el
Semantic supports a wide range of user interface tools.
Smart Completion
Completes symbols actually available in a given context. Some tools call this intellisense.
Idle Summary and Completion
Show function help, or offer up smart completions in idle time.
Speedbar Browser
Code for browsing tag lists with Speedbar.
Documentation Generator
Identifies inline documentation in source code, and can convert it to texinfo. It can also create inline documenation.
Stickyfunc mode
Locks the function declaration you are editing in the header line. (Emacs only).
Imenu
Create hierarchical imenu menus from parsed files.
Navigator
Senator is a navigator that permits simple navigation through the parsed language. It also includes token highlighting, and magic cut & paste.
Decoration Modes
Decorate buffers using more than regular expressions, such as overlines for functions, highlight header files Emacs can't find.
Smart Bookmarking
Emacs tracks what you edit, and allows quick navigation by name.
Highlight bad code
text which does not fit the language is underlined.
Charting
Draw a chart of some things semantic can quantify.
Analyzer
Examines code, and references those names against a database of pre-parsed files to provide detailed information.

Contribute to Semantic

Semantic's potential scope is quite large. If you would like to help Semantic push forward, consider participating in one of these fields:

  • Write a language agnostic tool that uses semantic.
  • Write a language definition for an unsupported language.
  • Maintain one of the language definitions already in Semantic, like scheme or C++.
  • Test Semantic and send in bugs.
  • Help with documentation
  • Keep Semantic compatible with the many versions of [X]Emacs

Join the mailing list

Join the mailing list to ask question, or help develop semantic.

Other Tools that use Semantic

Java Development Environment (JDE) is a full development environment for Java. It uses Semantic to provide useful Java specific features.

Emacs Code Browser (ECB) lets you browse your files' contents. Uses the Semantic package.

COGRE (pronounced cougar) is a COnnected GRaph Editor for Emacs. As it matures, it will use semantic to reverse-engineer sources into UML diagrams.

SRecode The Semantic Recoder is a template management system that generates code from Semantic tags.

Notes

Semantic works with Emacs 21, 22 & 23, XEmacs 20.x, and 21.x.

Semantic is always developed with Emacs from CVS, but I strive for compatiblity with as many versions of Emacs as I can. Please report bugs if it doesn't support your version of Emacs.


Downloading CEDET

All the CEDET tools are available from a single distribution file.

CEDET is currently driving toward a 1.0 release. Try out a pre-release and send in bug reports on the build process, or anything else to the mailing list.

Try out cedet-1.0pre6.tar.gz.

After building CEDET, consider adding your results to the prerelease tested configuration page by adding your own platform information.

Please Note:

If you encounter build problems with a CEDET release, those issues may have already been fixed in CVS! CEDET has an active community of users that help identify and fix these issues quickly. You can check the mailing list archives or just try the CVS version directly.

If semantic kills font-lock, you need to get and use overlay-fix.el Thanks to David Ponce for creating this fix.


 
Get CEDET at SourceForge.net.
Donate With Paypal
gnu Eric's homepage
Return to CEDET.
Send mail to cedet-devel to contact the developers.
Visit Siege-engine.com to see what I do in analog land.

Copyright(C) 1997,98,99,2000,01,02,03,04,05,06,07,08,09 Eric M. Ludlam
Verbatim copying and distribution is permitted in any medium, provided this notice is preserved.