Semantic (original) (raw)

"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 experts 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:

Read the doc

The documentation for Semantic is built automatically and made available via randomsample.

Check it outhere

Join the mailing list

Join themailing listto 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

Downloading CEDET

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

Latest Stable Release: CEDET 1.1

Try outcedet-1.1.tar.gz.

CEDET 1.1 includes all the security fixes from 1.0.1, a long list of bug fixes, and additional new features to support Java, Android and Arduino programming!

Our goal for CEDET 1.1 is that this will be the LAST release using the current install and file organization schemes. This will also be the last release to support Emacs 22! Future released versions will use a new file system scheme compatible with Emacs 24.<

After building CEDET 1.1, consider joining themailing list and help make CEDET better.

Previous Stable Release: CEDET 1.0.1

The previous stable release iscedet-1.0.1.tar.gz. You will need CEDET 1.0.1 for older versions of Emacs, such as Emacs 21 or 22.1.

About this Security Release:
CEDET 1.0 has a security issue related to loading project files with EDE. If you are using CEDET 1.0, please upgrade to CEDET 1.0.1 to recover from this issue. If you use Emacs 23.3 with built-in CEDET, please upgrade to Emacs 23.4 or later, apply thepatch, or upgraded to CEDET 1.0.1.

CEDET Development

Did you find a bug?

If you encounter problems with a CEDET release, those issues may have already been fixed in Git! 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 Git version directly.

When using CEDET from Git, please note that we are transitioning to a new file and install scheme to be more compatible with Emacs 24. Changes will be required in your .emacs.

Emacs Version Support:

CEDET 1.0.1, and 1.1* has TWO automated build processes, one via Make, and the other via starting Emacs, and executing a build command.

This table shows the automated testingdone for the release of CEDET 1.1:

| | Emacs 22 | Emacs 23 | Emacs 24 | | | ---------------- | -------- | -------- | - | | UBuntu 11.10 | ✓ | | | | Debian Stable | ✓ | ✓ | ✓ | | OSX 10.6 | ✓ | ✓ | | | Windows 7/cygwin | ✓ | | |

Emacs 21 CEDET's test suite will fail, but most parts still work for CEDET 1.0.1.

XEmacs Neither build process works with XEmacs 21.4. It is possible to build parts of it by hand it so it works however.

SXEmacs We have integrated patches to support SXEmacs, but we haven't tested it ourselves. Parts of CEDET have been reported to install and work.

Windows XP/7 If you do not have cygwin, you will need to use the cedet-build.el script to build CEDET.

If semantic kills font-lock, you need to get and useoverlay-fix.elThanks to David Ponce for creating this fix.